10.7 パラレル問合せの使用
Oracle Textでは、ローカルCONTEXT
索引でのパラレル問合せ、および複数のOracle Real Application Clusters (Oracle RAC)ノードにわたるパラレル問合せがサポートされます。
一般に、パラレル問合せは意思決定支援システム(DSS)に最適です。それらは、大規模なデータ・コレクションと複数のCPUを備え同時ユーザー数が少ない分析システムや、Oracle RACノードにも最適です。
10.7.1 ローカルのCONTEXT索引でのパラレル問合せ
パラレル問合せは、ローカルのCONTEXT
索引のパラレル処理を指します。
索引の並列度と様々なシステム属性に基づいて、Oracleにより、索引処理のために起動されるパラレル問合せワーカーの数が決定されます。各パラレル問合せワーカーが、1つ以上の索引パーティションを処理します。このデフォルトの問合せ動作は、パラレルに作成されるローカル索引に適用されます。
ただし、同時ユーザー数が多く負荷の高いシステムで問合せが連続的に実行される場合は、通常上位N個のヒットが最初の数個のパーティションによって満たされるため、問合せのスループットはパラレル問合せによって一般に低下します。たとえば、ORDER
BY
パーティション・キー列を持つ典型的な上位N個のテキスト問合せがあるとします。
select * from ( select story_id from stories_tab where contains(...)>0 order by publication_date desc) where rownum <= 10;
これらのテキスト問合せは、通常、パラレル問合せでは適切に動作しません。
ALTER INDEX
文を次のように使用して、パラレル索引の操作後にパラレル問合せを使用禁止にできます。
Alter index <text index name> NOPARALLEL; Alter index <text index name> PARALLEL 1;
また、次のように、パラレル問合せを使用可能にしたり、並列度を上げることもできます。
Alter index <text index name> parallel < parallel degree >;
10.7.2 Oracle RACノード間のパラレル問合せ
Oracle Real Application Clusters (Oracle RAC)を使用すると、問合せの負荷が増えるにつれて、問合せのスループットとスケーラビリティを向上できます。
Oracle Textのパフォーマンスは、(ローカル・パーティション索引を使用して)テキスト・データとOracle Text索引を物理的にパーティション化し、各パーティションが個別のOracle RACノードで処理されるようにすると、さらに向上させることができます。この方法で、複数のノード間でのキャッシュ・コンテンツの重複を回避することにより、Oracle RAC Cache Fusionのメリットを最大限に活用できます。
Oracleは、データベース・オブジェクト・レベルのアフィニティをサポートしているため、索引オブジェクト($I
表および$R
表)を特定のノードに割り当てるのがはるかに簡単です。
Oracle RACは問合せのスループットとパフォーマンスを向上させるソリューションを提供していますが、データの容量が増加しても常に同じパフォーマンス向上が見込めるわけではありません。パフォーマンスの向上を図るには、システム・グローバル領域(SGA)キャッシュに使用できるメモリー量を増やすか、データをパーティション化して、問合せですべての表パーティションをヒットしなくても、必要な問合せ結果セットを提供できるようにします。