Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[TechNight #50] Oracle Database 21c 新機能解説 第2回 (後半パート)

[TechNight #50] Oracle Database 21c 新機能解説 第2回 (後半パート)

Oracle Database 21c 新機能解説
第2回の後半パートでは、下記について解説しています。

1.Sharding
2.Persistent Memory Database

3115a782126be714b5f94d24073c957d?s=128

oracle4engineer
PRO

November 26, 2021
Tweet

More Decks by oracle4engineer

Other Decks in Technology

Transcript

  1. Oracle Database Technology Night #50 Oracle Database 21c 新機能解説2 後半

    Sharding Persistent Memory Database ⽇本オラクル株式会社 データベース・ソリューション部 2021年11⽉25⽇
  2. Copyright © 2021, Oracle and/or its affiliates 2 Sharding

  3. シャード・ディレクタ • Global Data Servicesソフトウェア • 各シャードへの接続のルーティングを⾏う • 構成・管理処理の実⾏ シャード・カタログ

    • シャード・データベースの構成情報や構成・管理タスク を保持するリポジトリ・データベース シャード • パーティショニングされたデータを保持する(プラガブル) データベース シャード・データベース • シャードの集合 Oracle Database Shardingの構成要素 Copyright © 2021, Oracle and/or its affiliates 3 シャード・ディレクタ シャード・カタログ シャード シャード・データベース
  4. 各シャードが持つデータの排他と重複を使い分ける設計が必要 Sharded Table (シャード表) • パーティショニングされた表 • 全シャードが排他的にデータを持つ • 定義はパーティション表とほぼ同じ

    • RANGE • LIST • CONSISTENT HASH • これらの複合(コンポジット・パーティショニング) Duplicated Table (重複表) • パーティショニングできない表 • 全シャードが同じデータを持つ • シャード・カタログが持つデータがレプリケートされる • ⾼頻度の更新は想定していない 各シャードへのデータのパーティショニング Copyright © 2021, Oracle and/or its affiliates 4 シャード・カタログ シャード シャード 重複 排他
  5. ジョインする関係にあるシャード表 1つのシャード内でSQL処理を完結させる • 複数のシャード表のパーティショニングが合致するかがSharding適合の分⽔嶺 複数のシャード表の間に親⼦関係を持たせる • システム管理シャーディングの親表のパーティションと⼦表のパーティションを同じシャードに配置する • 親⼦関係がある⼀連のシャード表を表ファミリと呼ぶ 親⼦関係の定義

    • リファレンス・パーティション • PARENT句 表ファミリ Copyright © 2021, Oracle and/or its affiliates 5 親表A ⼦表B シャード 1 シャード 2 シャード 3
  6. クライアントはシャード・ディレクタに接続リクエストを発⾏する (1) Oracleクライアントはシャード・ディレクタに接続リクエス トを発⾏ (2) シャード・ディレクタはどのシャードがどのパーティションを 担当しているか把握している (3) 接続リクエストをリダイレクト コネクション・プールも使⽤可能。

    Oracle製コネクション・プールはどの物理コネクションがどの シャードに接続されているか区別してプールできる。 • Universal Connection Pool for Java(UCP) • OCI Session Pool • Oracle Data Provider for .NET(ODP.NET) クライアントからの接続 Copyright © 2021, Oracle and/or its affiliates 6 シャード・ディレクタ シャード・カタログ シャード シャード・データベース Oracleクライアント (1) (2) (3) (3)
  7. 1つのシャード内で完結させるのが基本 単⼀シャード・クエリー • シャーディング・キーでシャードを特定できる • 1つのシャードに接続して実⾏される • オンライン・トランザクション処理は基本的にこれを想定 マルチ・シャード・クエリー •

    複数シャードにまたがるSQL • シャード・カタログ・データベースに接続して実⾏される • 集計・分析処理 シャーディングでのSQL実⾏ Copyright © 2021, Oracle and/or its affiliates 7 シャード・カタログ シャード シャード Oracleクライアント Oracleクライアント
  8. • シャード・データベースへのアクセス⽤のJDBC DataSource • フェデレーテッド・シャーディング • ⼀元化されたバックアップおよびリストア • シャーディング・アドバイザ Oracle

    Database 21c Shardingの新機能 Copyright © 2021, Oracle and/or its affiliates 8
  9. シャーディング・キーを指定してコネクションを取得 シャーディング・キーを指定するとその値に対応するシャードに接続 19cまでのクライアントからのアクセス⽅法 Copyright © 2021, Oracle and/or its affiliates

    9 //Java OracleDataSource ods = new OracleDataSource(); OracleShardingKey sdkey = ods.createShardingKeyBuilder() .subkey("Customer_Name_XYZ", JDBCType.VARCHAR) .build(); // シャーディング・キーを⽣成 Connection con = ods.createConnectionBuilder() .shardingKey(sdkey) .build(); // シャーディング・キーを指定してコネクションをプールから取得 ... // SQL実⾏ con.commit(); con.close(); // コネクションをプールに返却 (1) (2)
  10. シャーディング・キーをSQLから⾃動判別 どのシャードに接続するかはSQLから⾃動判別する。 個別シャードへのアクセスとマルチ・シャード・クエリーを区別する必要もない。 シャーディング・データソース(JDBC thin driver) Copyright © 2021, Oracle

    and/or its affiliates 10 // プロパティでシャーディング属性をtrueにする Properties prop = new Properties(); prop.setProperty("oracle.jdbc.useShardingDriverConnection", "true"); ... // SQLからシャーディング・キーを⾃動判別して適切なコネクションを取得 OracleConnection conn = ds.getConnection(); PreparedStatement statement = conn.prepareStatement(!"#$#%&'(')*+,',-."/0*1.&02$#'34565'71'8'9!); statement.setInt(1, 15); ResultSet rs = statement.executeQuery(); (1) (2)
  11. 既存のデータベースをシャードとして組み込む クラスタを構成してからスキーマを定義 シャード・カタログで発⾏したスキーマ定義が各シャードにコ ピーされる スキーマのあるデータベースをシャードとして組み込む フェデレーテッド・シャーディング すでにスキーマのあるデータベースを取り込める フェデレーテッド・シャーディング Copyright ©

    2021, Oracle and/or its affiliates 11 シャード・カタログ シャード シャード・カタログ シャード
  12. 1つのシャードは1つのデータベース Oracle Database 19c 個別のシャード(データベース)を個別にバックアップ Oracle Database 21c シャード・ディレクタのgdsctlコマンドでバックアップを集中 管理可能

    ⼀元化されたバックアップおよびリストア Copyright © 2021, Oracle and/or its affiliates 12 シャード・ディレクタ シャード シャード シャード・カタログ シャード・カタログ
  13. • シャーディングがスケールする暗黙の前提は「1つの処理は1つのシャード内で完結する」 • シャード表と重複表を使い分けなければならない 既存データベースのスキーマとSQLを分析しシャーディング⽤スキーマの候補を複数提⽰する シャーディング・アドバイザ 13 親シャード表A ⼦シャード表B シャード

    1 シャード 2 シャード 3 重複表C 既存データベース Copyright © 2021, Oracle and/or its affiliates
  14. 既存データベースのスキーマとSQLを分析しシャーディング⽤スキーマの候補を複数提⽰する 10g以降のOracle Databaseに接続して使⽤するコマンド・ライン・ツール 既存データベースのスキーマとSQLを分析しシャーディング⽤スキーマの候補を複数提⽰する シャーディングがスケールする暗黙の前提は「1つの処理は1つのシャード内で完結する」 既存データベースに格納されている情報からパーティショニングしたスキーマの候補を複数提⽰する • スキーマ構造(主キー、外部キー) • SQL実⾏計画(表のジョイン)

    • 動的パフォーマンス・ビュー • AWRスナップショット シャーディング・アドバイザ Copyright © 2021, Oracle and/or its affiliates 14
  15. gwsadvコマンドで分析対象に接続 分析対象データベースに直接接続 スキーマ情報を別のデータベースに移して接続 シャーディング・アドバイザ Copyright © 2021, Oracle and/or its

    affiliates 15 gwsadv gwsadv 分析対象データベース 分析対象データベース スキーマ情報 $ expdp ... !"#$%#$&'%$()($(*"#+, ワークロード情報(AWRスナップショット) -.+/012"3(!+%*4"'%56789:5;79<=5;>6?@A6B:CD
  16. SQL実⾏計画からジョインする関係を調べる SQL> ALTER SYSTEM SET statistics_level=all; SQL> grant create session

    to sharding_advisor_user; SQL> grant alter session to sharding_advisor_user; SQL> grant select on v_$sql_plan to sharding_advisor_user; SQL> grant select on v_$sql_plan_statistics_all to sharding_advisor_user; SQL> grant select on gv_$sql_plan to sharding_advisor_user; SQL> grant select on gv_$sql_plan_statistics_all to sharding_advisor_user; SQL> grant select on DBA_HIST_SQLSTAT to sharding_advisor_user; SQL> grant select on dba_hist_sql_plan to sharding_advisor_user; SQL> grant select on dba_hist_snapshot to sharding_advisor_user; シャーディング・アドバイザに必要な権限 Copyright © 2021, Oracle and/or its affiliates 16
  17. gwsadvコマンドで分析対象データベースに接続 $gwsadv -n hostName:port -s serviceName -u username -p password

    -c -w シャーディング・アドバイザのコマンド Copyright © 2021, Oracle and/or its affiliates 17 gwsadvコマンドのオプション 意味 [-n nodeName[:portnum]] 接続先のネットワーク情報 [-s serviceName] -u username 接続先のユーザー/パスワード -p password [-c] ワークロードの取得 (分析にSQL実⾏計画を使⽤) V$SQL_PLAN_STATISTICS_ALLから取得 [-awr_snap_begin timestamp] AWRスナップショットから取得 [-awr_snap_end timestamp] –w 分析にワークロードを使⽤する [sch=(schema1, schema2, …)] 分析対象スキーマ [-tab importantTabsFile] 分析対象表(を限定する)
  18. gwsadvコマンドを実⾏ シャーディング・アドバイザ実⾏例 Copyright © 2021, Oracle and/or its affiliates 18

    [oracle@jphppt07 (db21d) bin 22:55]$ $ORACLE_HOME/bin/gwsadv -n hostname:port -s servicename.db_domain -u user -p password -c -w -t /home/oracle/shardingadvisor/trc/gwsadvtrc1.trc ********** WELCOME TO THE SHARDING ADVISOR ********** Sharding Advisor: Release 20.0 - Development on ⾦ 11⽉ 19 2021 10:55:11 Copyright (c) 1982, 2018, Oracle and/or its affiliates. All rights reserved. ** Sharding is a database scaling technique based on horizontal partitioning ** ** of data across multiple independent physical databases, called shards. ** ** The sharding advisor will analyze your schema and workload and ** ** recommend sharding configurations that are best suited for the workload. ** ** The advisor will recommend how to construct table families, and ** ** specify which tables to shard and which tables to duplicate. ** ** A Sharded Table is a table that is partitioned into smaller and ** (省略)
  19. gwsadvコマンドを実⾏するとアドバイス結果を格納する表が作成される シャーディング・アドバイザ実⾏例 Copyright © 2021, Oracle and/or its affiliates 19

    SQL> select table_name from user_tables where table_name like 'SHARDINGADVISOR%'; TABLE_NAME ---------------------------------------------------------------------- SHARDINGADVISOR_CONFIGDETAILS SHARDINGADVISOR_CONFIGURATIONS SHARDINGADVISOR_ECPREDS SHARDINGADVISOR_IMPORTANT_TABS SHARDINGADVISOR_PREDS SHARDINGADVISOR_QUERYTYPES • SHARDED/DUPLICATED表の個数 • シングル/マルチ・シャード・クエリーの個数 • SHARDED表の構成 • DUPLICATED表の構成 • シングル・シャード・クエリー • マルチ・シャード・クエリー
  20. SHARDINGADVISOR_CONFIGDETAILS表 - 各候補の構成 シャーディング・アドバイザ実⾏例 Copyright © 2021, Oracle and/or its

    affiliates 20 SELECT rank, chosenbyuser, numshardedtables as stabs, sizeofshardedtables as sizestabs, numduplicatedtables as dtabs, sizeofduplicatedtables as sizedtabs, numsingleshardqueries as numssq, nummultishardqueries as nummsq, numcrossshardqueries as numcsq, cost FROM SHARDINGADVISOR_CONFIGDETAILS ORDER BY rank; RANK CHO STABS SIZESTABS DTABS SIZEDTABS NUMSSQ NUMMSQ NUMCSQ COST ---------- --- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- 1 Y 2 94517 9 2143864 12 2 0 337 2 2 108302 9 2006018 9 5 0 484 3 3 156206 8 1526974 8 6 0 533 この例では3つの候補がある SHARDED表の個数 DUPLICATED表の個数 クロス・シャード・クエリーの個数 マルチ・シャード・クエリーの個数 シングル・シャード・クエリーの個数
  21. SHARDINGADVISOR_CONFIGURATIONS表 - どの表をSHARDED/DUPLICATEDにするか シャーディング・アドバイザ実⾏例 Copyright © 2021, Oracle and/or its

    affiliates 21 SELECT rank, tableName as tname, tabletype as type, tablelevel as tlevel, parent, shardby as shardBy, shardingorreferencecols as cols, unenforceableconstraints, sizeoftable FROM SHARDINGADVISOR_CONFIGURATIONS ORDER BY rank, tlevel, tname, parent; RANK TNAME TYP TLEVEL PARENT SHARDBY COLS ---------- ------------------------------ --- ---------- -------------------- ---------- ------------------------- 1 SOE.CUSTOMERS S 1 HASH CUSTOMER_ID 1 SOE.ADDRESSES S 2 SOE.CUSTOMERS REFERENCE ADD_CUST_FK 1 SOE.CARD_DETAILS D NONE 1 SOE.INVENTORIES D NONE 1 SOE.LOGON D NONE 1 SOE.ORDERENTRY_METADATA D NONE 1 SOE.ORDERS D NONE 1 SOE.ORDER_ITEMS D NONE 1 SOE.PRODUCT_DESCRIPTIONS D NONE 1 SOE.PRODUCT_INFORMATION D NONE 1 SOE.WAREHOUSES D NONE RANK TNAME TYP TLEVEL PARENT SHARDBY COLS ---------- ------------------------------ --- ---------- -------------------- ---------- ------------------------- 2 SOE.CUSTOMERS S 1 HASH CUSTOMER_ID 2 SOE.ORDERS S 2 SOE.CUSTOMERS REFERENCE ORDERS_CUSTOMER_ID_FK 2 SOE.ADDRESSES D NONE 2 SOE.CARD_DETAILS D NONE 2 SOE.INVENTORIES D NONE 2 SOE.LOGON D NONE 2 SOE.ORDERENTRY_METADATA D NONE 2 SOE.ORDER_ITEMS D NONE 2 SOE.PRODUCT_DESCRIPTIONS D NONE 2 SOE.PRODUCT_INFORMATION D NONE 2 SOE.WAREHOUSES D NONE RANK TNAME TYP TLEVEL PARENT SHARDBY COLS ---------- ------------------------------ --- ---------- -------------------- ---------- ------------------------- 3 SOE.CUSTOMERS S 1 HASH CUSTOMER_ID 3 SOE.ADDRESSES S 2 SOE.CUSTOMERS REFERENCE ADD_CUST_FK 3 SOE.ORDERS S 2 SOE.CUSTOMERS REFERENCE ORDERS_CUSTOMER_ID_FK 3 SOE.CARD_DETAILS D NONE 3 SOE.INVENTORIES D NONE 3 SOE.LOGON D NONE 3 SOE.ORDERENTRY_METADATA D NONE 3 SOE.ORDER_ITEMS D NONE 3 SOE.PRODUCT_DESCRIPTIONS D NONE 3 SOE.PRODUCT_INFORMATION D NONE 3 SOE.WAREHOUSES D NONE SHARDED/DUPLICATED SHARDED表の階層 SHARDED表の親表 パーティショニングの種類 パーティショニング列 候補
  22. SHARDINGADVISOR_QUERYTYPES表 - どのSQLがシングル/マルチ・シャード・クエリーになるか シャーディング・アドバイザ実⾏例 Copyright © 2021, Oracle and/or its

    affiliates 22 SELECT * FROM SHARDINGADVISOR_QUERYTYPES ORDER BY SHARDINGCONFIGURATIONNUM; SHARDINGCONFIGURATIONNUM SQLID QUERYTYPE ------------------------ -------------------- -------------------- 1 5g00dq4fxwnsw UNABLE TO CLASSIFY 1 g1znkya370htg SINGLE SHARD QUERY 1 34mt4skacwwwd MULTI SHARD QUERY 1 2yp5w5a36s5xv SINGLE SHARD QUERY 1 28tr1bjf4t2uh MULTI SHARD QUERY 1 200mw76ta6n1r MULTI SHARD QUERY 1 1g81wda9ax75a SINGLE SHARD QUERY 1 0sh0fn7r21020 MULTI SHARD QUERY 1 6k3uuf3g8pwh6 SINGLE SHARD QUERY 1 6z0abpz6gj9tt MULTI SHARD QUERY 1 7xvcq2ssufqtb MULTI SHARD QUERY 1 982zxphp8ht6c SINGLE SHARD QUERY 1 a9cv97h3dazfh UNABLE TO CLASSIFY 1 agpj33kr5p9cf UNABLE TO CLASSIFY 1 amaapqt3p9qd0 SINGLE SHARD QUERY 1 bk8kh6zduvqxx SINGLE SHARD QUERY 1 4h624tuydrjnh SINGLE SHARD QUERY SHARDINGCONFIGURATIONNUM SQLID QUERYTYPE ------------------------ -------------------- -------------------- 2 5g00dq4fxwnsw UNABLE TO CLASSIFY 2 4h624tuydrjnh SINGLE SHARD QUERY 2 34mt4skacwwwd MULTI SHARD QUERY 2 2yp5w5a36s5xv SINGLE SHARD QUERY 2 28tr1bjf4t2uh SINGLE SHARD QUERY 2 200mw76ta6n1r SINGLE SHARD QUERY 2 1g81wda9ax75a SINGLE SHARD QUERY 2 0sh0fn7r21020 SINGLE SHARD QUERY 2 6k3uuf3g8pwh6 SINGLE SHARD QUERY 2 g1znkya370htg SINGLE SHARD QUERY 2 bk8kh6zduvqxx SINGLE SHARD QUERY 2 amaapqt3p9qd0 SINGLE SHARD QUERY 2 agpj33kr5p9cf UNABLE TO CLASSIFY 2 a9cv97h3dazfh UNABLE TO CLASSIFY 2 982zxphp8ht6c SINGLE SHARD QUERY 2 7xvcq2ssufqtb SINGLE SHARD QUERY 2 6z0abpz6gj9tt MULTI SHARD QUERY SHARDINGCONFIGURATIONNUM SQLID QUERYTYPE ------------------------ -------------------- -------------------- 3 g1znkya370htg SINGLE SHARD QUERY 3 200mw76ta6n1r MULTI SHARD QUERY 3 28tr1bjf4t2uh MULTI SHARD QUERY 3 2yp5w5a36s5xv SINGLE SHARD QUERY 3 34mt4skacwwwd MULTI SHARD QUERY 3 4h624tuydrjnh SINGLE SHARD QUERY 3 5g00dq4fxwnsw UNABLE TO CLASSIFY 3 bk8kh6zduvqxx SINGLE SHARD QUERY 3 amaapqt3p9qd0 SINGLE SHARD QUERY 3 agpj33kr5p9cf UNABLE TO CLASSIFY 3 a9cv97h3dazfh UNABLE TO CLASSIFY 3 982zxphp8ht6c SINGLE SHARD QUERY 3 7xvcq2ssufqtb MULTI SHARD QUERY 3 6z0abpz6gj9tt SINGLE SHARD QUERY 3 6k3uuf3g8pwh6 SINGLE SHARD QUERY 3 1g81wda9ax75a SINGLE SHARD QUERY シングル/マルチ・シャード・クエリー SQL ID 候補
  23. Copyright © 2021, Oracle and/or its affiliates 23 永続メモリー・データベース Persistent

    Memory Database
  24. 新しい性質を持ったメモリー・デバイス Intel Optane Persistent Memory (PMEM) • メモリー・スロットにDRAMの代わりに刺す不揮発性メモリー • CPUからメモリーとしてアクセス可能

    • Intel Cascade Lake以降で対応 Oracle Database 19c RU19.12 Memory Speed Filesystem • メモリー・スロットに刺すPMEMをメモリーとしてアクセスする • ファイルI/Oを置き換える Oracle Database 21c 永続メモリー・データベース • メモリー・スロットに刺すPMEMをメモリーとしてアクセスする • PMEMにデータベースのファイルがある • DRAM上のSGAにキャッシュする動作が変わる 不揮発性メモリーに最適化したデータベース Copyright © 2021, Oracle and/or its affiliates 24 SCSI controller DRAM PMEM HDD Flash Memory CPU DDR4 PCIe 永続メモリー・データベース
  25. 0.1 1 10 100 1000 10000 100000 1000000 10000000 100000000

    1.E+00 1.E+03 1.E+06 1.E+09 1.E+12 1.E+15 アクセス時間(ns) 容量(Byte) Persistent Memory以前 アクセス時間と容量 Copyright © 2021, Oracle and/or its affiliates 25 register 8B 0.5ns L1 Cache 32KB 1ns L2 Cache 2MB 4ns L3 Cache 20MB 10ns DRAM 64GB 100ns Flash Memory 6TB 20000ns HDD 14TB 5000000ns 不揮発性デバイス CPUからメモリーとしてアクセス 1GHzの1clock → 1 1K 1M 1G 1T 1P
  26. 0.1 1 10 100 1000 10000 100000 1000000 10000000 100000000

    1.E+00 1.E+03 1.E+06 1.E+09 1.E+12 1.E+15 アクセス時間(ns) 容量(Byte) Persistent MemoryはCPUからメモリーとしてアクセス可能かつ不揮発性という新しい性質を持つ アクセス時間と容量 Copyright © 2021, Oracle and/or its affiliates 26 register 8B 0.5ns L1 Cache 32KB 1ns L2 Cache 2MB 4ns L3 Cache 20MB 10ns DRAM 64GB 100ns Flash Memory 6TB 20000ns HDD 14TB 5000000ns 不揮発性デバイス CPUからメモリーとしてアクセス PMEM 128GB 300ns 1GHzの1clock → Persistent Memory 1 1K 1M 1G 1T 1P
  27. CPUからメモリーとしてアクセスかつ不揮発性 CPUからメモリーとしてアクセス • メモリー・スロットに搭載 • 不揮発性 Flash Memoryよりもかなり⾼速(1/10のアクセス時間) • DRAM

    (100ns) < PMEM (300ns) << Flash Memory (20000ns) • DRAMよりは低速 DRAMよりも⼤容量(×2〜4倍) • DRAM (64GB) < PMEM (128GB) << Flash Memory (6TB) • メモリー・スロットを半分明け渡す(DRAM容量が半分に減る) Intel Optane Persistent Memory Copyright © 2021, Oracle and/or its affiliates 27 SCSI controller DRAM PMEM HDD Flash Memory CPU DDR4 PCIe
  28. PMEMのメモリー・モジュール1枚はDRAMの4倍の容量がある 参考: DDR4 メモリー・モジュール1枚の容量 Copyright © 2021, Oracle and/or its

    affiliates 28 DRAM PMEM 参考: Exadata X8M 32GB Exadata X8MのDRAMの標準 64GB Exadata X8MのDRAMのMemory Expansion Kit 128GB 128GB Exadata X8MストレージのPMEMは128GB DIMM 256GB 512GB
  29. Direct Access for files (DAX) 従来ストレージと同じ • 従来と同じファイルI/O • ファイルとしてアクセス

    Filesystem DAX • DAX対応ファイル・システム • ファイル&メモリーとしてアクセス • Persistent Memory Database Device DAX • デバイス・ファイル • メモリーとしてアクセス • Exadata Storage OSレベルでのPMEMへのアクセス⽅法(AppDirect Mode) Copyright © 2021, Oracle and/or its affiliates 29 Filesystem DAX Filesystem process read() write() process read() write() /dev/dax process mmap() mmap()
  30. PMEMに作成したDAXファイル・システムにメモリーとしてアクセス Oracle Memory Speed File System • Oracle Database 19c

    RU19.12 • データベースのファイル群に⾼速にアクセス • ファイルI/Oをメモリー・アクセスに置き換え Persistent Memory Database • Oracle Database 21c • Directly Mapped Buffer Cache • PMEMはSGAバッファ・キャッシュの延⻑ • バッファ・キャッシュにブロックをコピーするのではなく、 PMEM上のブロックに直接アクセスする場合がある Oracle Databaseの2つのPMEM対応機能 Copyright © 2021, Oracle and/or its affiliates 30 process DRAM DRAM PMEM SGA (バッファ・キャッシュ) PGA process DRAM DRAM PMEM SGA (バッファ・キャッシュ) PGA データファイル データファイル
  31. PMEMにI/Oリクエストではなくメモリーとしてアクセス Oracle Database 21c 永続メモリー・データベース Copyright © 2021, Oracle and/or

    its affiliates 31 PMEM DAX Filesystem backing file データベースのファイル群 DAXファイル・システムのファイル PMEMアクセス⽤の抽象階層 PMEM対応ファイル・システム process OracleインスタンスのOSプロセス process メモリーとして アクセス OS階層 Oracle階層 PMEM Filestore
  32. PMEMアクセス⽤の抽象階層 PMEM Filestoreを作成する 1. DAX Filesystem作成 2. PMEM Filestore作成 3.

    データベース作成 初期化パラメータ PMEM_FILESTORE=db1_pmemfs CREATE DATABASE または RMANでリストア 永続メモリー・データベースの構成 Copyright © 2021, Oracle and/or its affiliates 32 !"#$%#&'(#(&)*+#,%-"#&./01234356 (-78%'-*8%&9:;0:./:./01234356ʼ <$!=*8>)*+# 9:;0:./16?@ABC4:./0ʼ ,*D#&E%& <+-!=&,*D#&F=& $7%-#G%#8H&-8&8#G%&0I>&($G,*D#&J%K # mkfs -t xfs /dev/pmem0 # mount -o dax /dev/pmem0 :;0:./:./01234356 PMEM DAX Filesystem backing file DAXファイル・システムのファイル PMEMアクセス⽤の抽象階層 PMEM対応ファイル・システム PMEM Filestore データベースのファイル群
  33. 容量を拡張する余地がない 例: Oracle Server X8 Intel Cascade Lake • 6ch/CPUソケット

    • 2DIMMs/ch 1ソケットあたり12のメモリー・スロット 2ソケット・マシンのメモリー・スロットは合計24 メモリー・スロットにデータベース本体がある Copyright © 2021, Oracle and/or its affiliates 33 メモリー・スロット CPUソケット
  34. メモリー・スロットの拡張性の低さ • DRAM容量が半分に減る • 容量拡張性がない • 容量上限がFlash Memoryより低い データの配置場所からくる制限 •

    共有ストレージ・クラスタ不可 • RAC不可 • ⽔平スケール・アウトはシャーディングを構成 • ストレージの冗⻑化不可 • メモリーはインターリーブ・アクセス(≒RAID 0) • Data Guardでレプリケーションを構成 メモリー・スロットにデータベース本体がある Copyright © 2021, Oracle and/or its affiliates 34 DDR4 6ch 2DIMMs/ch PMEM DRAM
  35. Oracle DatabaseでのPMEMの使⽤ Copyright © 2021, Oracle and/or its affiliates 35

    Exadata Persistent Memory Database PMEMの配置 スケール・アウト・ストレージのキャッシュ データベース・サーバーのデータベース本体 容量上限 PMEMはキャッシュ・メモリー • データベース本体はFlash Memoryまたは HDD • スケール・アウトで容量増設可能 PMEMがデータベース本体 • データベース・サイズの上限に影響 • 実質的に容量増設できない ストレージの冗⻑化 ASMによる多重化 • Data Guardとの組み合わせも可能 単体では不可 • Data Guardによるレプリケーションが必要 スケール・アウト RAC • スキーマ変更なしで可能 シャーディング • パーティショニング設計必須
  36. スケール・アウト・ストレージの低レイテンシーなキャッシュ・メモリーとしてPMEMを使⽤している Exadata X8M Copyright © 2021, Oracle and/or its affiliates

    36 ストレージ DBサーバー CPU メモリー 36 デバイス High Capacity Model Extreme Flash Model PMEM 128GB×12=1.5TB 128GB×12=1.5TB Flash Memory 6.4TB×4=25.6TB 6.4TB×8=51.2TB Hard Disk 14TB×12=168TB - ストレージ・サーバー1台あたりのストレージ・デバイス DBサーバーのDRAMをPMEMの ために減らす必要はない ストレージ・サーバーを増設すれば PMEMキャッシュの総量も増加
  37. データへのアクセス可能な範囲の違い Oracle Database Sharding • 各シャードは⾃⾝のストレージにのみアクセス可能 • オンライン・トランザクション処理向け • 分析・集計処理⽤途には向いていない

    • 全シャードにまたがる並列処理も可能であるが シャード間データ交換能⼒がない • フル・パーティション・ワイズ・ジョインが前提 Oracle Real Application Clusters • 全DBサーバーが全ストレージのデータにアクセス可能 • オンライン・トランザクション処理 • 分析・集計処理 • SQL実⾏計画の途中の段階でのノード間データ 交換能⼒があるためフル・パーティション・ワイズ・ ジョインできないパターンにも対応可能 クラスタ・アーキテクチャ Copyright © 2021, Oracle and/or its affiliates 37 DBサーバー ストレージ DBサーバー ストレージ
  38. None