※本ページは、”Exadata uses Persistent Memory for Fast Transactions“の翻訳です
最新世代のExadataには最新世代のExadataにはリモートダイレクトメモリアクセス(RDMA)と組み合わせたIntel Optane Persistent Memory(PMEM)を使用して、データベースのパフォーマンスでの優位性を維持および拡張することに焦点を当てて、信じられないほどの量のエンジニアリング作業が費やされました。この記事では、以下を含むトランザクションアプリケーションのパフォーマンスに不可欠なデータベースパフォーマンスとスケーラビリティの3つの主要な領域の進歩に焦点を当てます。
- ストレージからの個々のデータベースブロックの読み取り
- データベーストランザクションログへの書き込み
- クラスタ相互接続を介したデータベースブロックの転送
Oracle Databaseの奥深くにあるこれらの遅延の影響を受けやすい操作は、再び大幅に改善され、Exadataは、オンプレミスとクラウドの両方のデプロイメントで競合他社よりもさらに1世代先を行っています。
トランザクション処理
上のビデオで使用されている例は、データベーストランザクションの最も単純で最も一般的な例の1つである、データベースへのWebショッピングカートのインサート処理で何が起こるかを示しています。この例のアプリケーションは、JSON(Java Script Object Notation)を使用してデータをモデル化しているため、データの複雑さはすべて、データベースにインサート処理するだけでよい単一のオブジェクトにカプセル化されます。このアプリケーション設計は、アプリケーションとデータベース間の相互作用を最小限に抑えますが、Exadataテクノロジーを使用するとさらに高速化されます。どちらの場合もインデックスは基本的に同じであるため、JSONオブジェクトとリレーショナルテーブルで同じ基本的な動作が発生します。JSONオブジェクトのインサート処理にはインデックスの更新が含まれ、一部のインデックスブロックはストレージから読み取る必要があります。
この画像は、データベースサーバーのメモリ内のインデックスツリーと、そのインデックスツリーへの新しいオブジェクトまたはデータ行の挿入に関連する処理を示しています。 ツリーの大部分はメモリに収まりますが、データが大きすぎてメモリに収まらないことが多く、ストレージから読み取る必要があります。

レイテンシーが重要
1秒あたりの入出力操作(IOPS)は、システム全体の全体的なパフォーマンスの重要な指標ですが、レイテンシー(応答時間)は各トランザクションのパフォーマンスにとって重要です。Exadataは数百万IOPSの性能を提供します。これは、総帯域幅の指標として競合他社よりも劇的に高くなっています。たとえば、Oracle Cloud で利用可能な最小の Exadata X8Mは、最新の AWS RDS インスタンスで実行されているOracle Database の11.5倍の IOPS 性能を提供します(AWS RDS の 260,000 IOPS に対して、Exadata Cloud Service では 3,000,000 IOPSを提供)。Exadata Cloud Serviceは、データベースサーバーとストレージサーバーを追加するだけで、このサイズを何倍にも拡張できます。Exadataはこの信じられないほどの規模を実現しますが、応答時間またはレイテンシー個々のデータベース操作の数は、コミット処理中の単一ブロックの読み取りやREDO書き込みなどのトランザクションパフォーマンスにとって重要です。
シングルブロック読み取り(<19µsec)
考慮すべき最初のタイムクリティカルな操作は、単一ブロックの読み取りです。上記のトランザクションの例に示されているように、データベースは大きすぎてメモリに収まらないことが多く、データの一部のブロックをストレージから読み取る必要があります。少量の I/Oでも、それらの I/O 操作が十分に高速でない場合、トランザクションのパフォーマンスに影響を与える可能性があります。次の図は、Exadataデータベース・サーバーとストレージ・サーバー間の高速接続を示しています。これにより、ソフトウェアはリモート・ダイレクト・メモリー・アクセス(RDMA)を使用できるようになります。

この画像は、リモート・ダイレクト・メモリー・アクセスを使用してExadata Storage Serverからデータのブロックを読み取るExadata Database Server上のOracle Databaseを示しています。
Exadata上のOracle Databaseは、19µsec未満でストレージからデータの単一ブロックを読み取ります。これは、「cell single block physical read(セル単一ブロック物理読み取り)」メトリックの自動ワークロードリポジトリ(AWR)を介して簡単に測定できます。同等のAWRメトリックは、Exadata以外のシステムでの「db file sequential read(dbファイルの順次読み取り)」です。このレベルのパフォーマンスとデータの整合性および障害回復力を提供するソリューションは他にありません。
Intel Optane Persistent Memory(PMEM)は、Exadataのキャッシュ層として使用されます。特に、単一ブロックの読み取りの対象となるキャッシュブロック、およびデータベーストランザクションログへの書き込みのキャッシュを対象としています。データを永続メモリにキャッシュすると、Oracle Databaseは、要求/応答処理モデルを使用するストレージテクノロジーと比較して、これらのコンテンツにはるかに高速にアクセスできます。Oracle Databaseソフトウェアは、ストレージからブロックを「要求」しません。むしろ、データベースは単にPMEMの内容を読み取り、必要なブロックを取得します。Exadata Storage Server Software は、データの「ホット」ブロックを識別し、それらをPMEMに配置する役割を果たします。
永続メモリを使用したコミットの高速化(〜25µsec)
Exadataがアドレス指定するトランザクション処理の2番目のタイムクリティカルな操作は、特にCOMMIT処理中にデータベーストランザクションログに書き込むことです。トランザクションログへの書き込みは常に重要ですが、特にそれらの書き込みにコミットマーカーが含まれている場合は重要です。単にオブジェクトが書き込まれる(redoブロック)のではなく、その書き込みが行われるコンテキスト(コミット中)です。Oracleには、トランザクションログを高速化する多数の最適化が組み込まれています。最新のイノベーションは、永続メモリを使用してコミット処理を高速化することです。以下に示すように、トランザクションログ(redoブロック)は3つのストレージサーバーに同時に書き込まれます。

この図は、3つのExadata StorageServerに同時に書き込まれるトランザクションログブロックを示しています。
データベーストランザクションログへの書き込みは、処理されるデータの量によって異なりますが、通常は約25µ秒で完了します。重要なREDOログ書き込み操作は、任意のOracle Enterprise EditionデータベースのAWRメトリック「log file sync(ログファイル同期)」および「log file parallel write(ログファイル並列書き込み)」で確認できます。Oracle Database内のトランザクション処理は主にメモリ内で行われますが、トランザクションログは耐久性のためにストレージに保持され、Exadataはこれらの書き込みを高冗長構成(Oracle Cloudの標準構成)で3つのストレージサーバーに同時に保持します。Oracleデータベース内でのこの操作は、処理量が増えるにつれて、より重要になっています。Exadataは、最新のトランザクション処理アプリケーションと歩調を合わせるため、永続メモリコミットアクセラレータなどのイノベーションを提供します。
クラスタインターコネクトのリモートダイレクトメモリアクセス(〜10µsec)
考慮すべき3番目のタイムクリティカルな操作は、クラスター相互接続を介したブロックの転送です。リモートダイレクトメモリアクセス(RDMA)は、前述のように、単一のブロックの読み取りやOracle Databaseトランザクションログへの書き込みなど、あるコンピュータ上のプロセスが別のコンピュータのメモリに直接アクセスできるようにするテクノロジです。RDMAは、利用可能な最速のクラスタ相互接続の基盤でもあり、ExadataでOracle Databaseバッファキャッシュの同期を維持するExafusionテクノロジの基盤です。

Exafusionは、Exadataでバッファキャッシュの同期を維持するクラスタ相互接続プロトコルです。
Oracle Cache Fusionプロトコルは、さらに優れたパフォーマンスを提供する拡張機能により、ExadataプラットフォームではExafusionとして知られています。Exadata上のOracle Databaseは、RDMAを使用して約10µsecの範囲で他のノードのデータにアクセスし、他のプラットフォームよりも優れたパフォーマンスとスケーラビリティを提供します。Oracle Cloud以外で使用されている従来のネットワーク技術では、待ち時間は500〜1,000µsec(50倍〜100倍遅い)の範囲です。
参考文献
この記事では、Exadataでのエンドツーエンドの処理と、トランザクション処理で可能な最高レベルのパフォーマンスを提供する独自のイノベーションについて説明します。これは、「Exadataでの永続メモリの魔法」に関する記事で取り上げたのと同じテクノロジーに基づいています。
