1.2.10 データ検索およびデータ取得処理のオフロード

Exadataスマート・スキャンにより、検索および取得の処理をストレージ・サーバーにオフロードします。

スマート・スキャンでは、選択したOracle Database関数がOracle Exadata Storage Server内で実行されます。この機能により、データベース・サーバーのI/Oの量が最小限に抑えられて、データベース・サーバーとストレージ・サーバーの間のI/O関連の通信量が減少するため、問合せのパフォーマンスが向上します。さらに、スマート・スキャンによって節約されたデータベース・サーバーのCPUを使用して、システム・スループット全体を向上させることができます。

スマート・スキャンでは、ダイレクト・パス読取りメカニズム(つまり並列操作および大規模な順次スキャン)を使用する、全表スキャン、高速全索引スキャンおよび高速全ビットマップ索引スキャンが自動的に最適化されます。Oracle Exadata Storage Server内でスマート・スキャンによって実行される主な機能を次に示します。

  • 条件のフィルタ処理

    スマート・スキャンの条件フィルタ処理では、条件評価のためにすべての行がデータベース・サーバーに転送されるのではなく、問合せ基準に一致する行のみがデータベース・サーバーに送られるようになります。サポートされている条件演算子としては、=!=<><=>=IS [NOT] NULLLIKE[NOT] BETWEEN[NOT] INEXISTSIS OF typeNOTANDおよびORがあります。また、Exadata Storage Serverによって、条件のフィルタ処理の間に、最も一般的なSQLファンクションが評価されます。

  • 列のフィルタ処理

    スマート・スキャンの列フィルタ処理では、すべての行がデータベース・サーバーに転送されるのではなく、要求された列のみがデータベース・サーバーに送られるようになります。列が多い表や、列にLOBが含まれている表の場合は、列のフィルタ処理によって節約されるI/O帯域幅が非常に大きくなる可能性があります。

たとえば、次の単純な問合せについて考えてみましょう。

SQL> SELECT customer_name FROM calls WHERE amount > 200;

この場合、スマート・スキャンによって、条件のフィルタ処理(WHERE amount > 200)および列のフィルタ処理(SELECT customer_name)がExadataストレージ・サーバーにオフロードされます。この効果は、表のサイズ、構造および内容によっては非常に大きくなります。たとえば、表に1 TBのデータが含まれているが問合せ結果が2 MBのみの場合は、2 MBのデータのみがストレージ・サーバーおよびデータベース・サーバーから転送されまです。

次の図では、ストレージ・サーバーとデータベース・サーバーの間の不要なデータ転送がスマート・スキャンによってどのように回避されるかを示します。

図1-2 データ検索および取得のオフロード

図1-2の説明が続きます。
「図1-2 データ検索および取得のオフロード」の説明

スマート・スキャンでは、条件のフィルタ処理および列のフィルタ処理のオフロードの他に、次のことが可能です。

  • スター・スキーマ用の最適化された結合処理(大きい表と小さい参照表との結合)。これは、ブルーム・フィルタを使用して実装され、要素がセットのメンバーであるかどうかを判断するための非常に効率的な確率論的手法を提供します。

  • 暗号化された表領域および暗号化された列に対する最適化されたスキャン。暗号化された表領域の場合は、Exadata Storage Serverで、ブロックを復号化してその復号化したブロックをOracle Databaseに返すことや、暗号化されたデータに対して行および列のフィルタ処理を実行できます。CPUの負荷が高い復号化処理をExadataセルにオフロードすることで、データベース・サーバー内のCPUを大幅に節約します。

  • 圧縮データに対する最適化されたスキャン。スマート・スキャンはハイブリッド列圧縮と連携することで、列射影、行のフィルタ処理および圧縮解除をExadata Storage Serverで実行してデータベース・サーバーでのCPUサイクルを節約します。

  • データ・マイニング・モデル用のスコアリング関数(PREDICTION_PROBABILITYなど)のオフロード。これによって、分析の処理速度が速くなると同時に、データベース・サーバーのCPUの消費と、データベース・サーバーとストレージ・サーバーの間のI/O負荷が減少します。