ヘッダーをスキップ
Oracle® Textアプリケーション開発者ガイド
12cリリース1 (12.1)
B71317-04
  目次へ移動
目次
索引へ移動
索引

前
次
 

CONTEXT索引のSEPARATE_OFFSETSオプションを使用した応答時間の短縮

Oracle Textに用意されているSEPARATE_OFFSETSオプションを使用すると、主に1つのワードまたはブールの問合せを対象としてIO操作を多用するCONTEXT索引の問合せパフォーマンスを改善することができます。

SEPARATE_OFFSETSオプションでは、TEXTタイプのトークンに対して作成されるポスト・リストの構造が異なります。DOCID、頻度、情報の長さ(オフセット情報の長さ)およびオフセットをポスト・リストに分散させるかわりに、SEPARATE_OFFSETSオプションではDOCIDと頻度をポスト・リストの最初にまとめて格納し、情報の長さとオフセットをポスト・リストの最後に格納します。ポストの先頭にあるヘッダーには、DOCIDとオフセットの間の境界点に関する情報が含まれています。このようにDOCIDとオフセットを分離すると、データを読み取る問合せの時間が短くなるため、問合せの応答時間が短縮されます。

SEPARATE_OFFSETSオプションのパフォーマンスが最大限に発揮されるのは、BIG_IOオプションと組み合せたときに、きわめて長いポストを持つトークンを対象とした場合です。

SEPARATE_OFFSETSオプションを指定してCONTEXT索引を作成するには、まずSEPARATE_OFFSETS記憶域属性の値をTに設定して基本記憶域プリファレンスを作成し、CONTEXT索引の作成時にこの記憶域プリファレンスを指定します。

次の例は、基本記憶域プリファレンスmystoreを作成し、そのSEPARATE_OFFSETS記憶域属性の値をTに設定します。

exec ctx_ddl.create_preference('mystore', 'BASIC_STORAGE');
exec ctx_ddl.set_attribute('mystore', 'SEPARATE_OFFSETS', 'T');

SEPARATE_OFFSETSオプションを無効にするには、SEPARATE_OFFSETS記憶域属性の値をFに設定して既存の記憶域プリファレンス(mystore)を更新してから、索引を再構築します。

exec ctx_ddl.set_attribute('mystore', 'SEPARATE_OFFSETS', 'F');
alter index idx rebuild('replace storage mystore');

警告:

索引で矛盾が生じるので、SEPARATE_OFFSETS索引オプションの無効化にメタデータ置換操作は使用しないでください。

索引を再構築せずにパーティション索引でSEPARATE_OFFSETSオプションを有効にするには、SEPARATE_OFFSETS記憶域属性の値をTに設定して基本記憶域プリファレンスを変更し、ctx_ddl.replace_index_metadataを使用してグローバル索引メタデータを置き換えてから、パーティション索引表のパーティションごとにREBUILDモードでoptimize_indexをコールします。

次の例は、パーティション索引idxに対してSEPARATE_OFFSETSを有効にします。

exec ctx_ddl.set_attribute('mystore', 'SEPARATE_OFFSETS', 'T');
exec ctx_ddl.replace_index_metadata('idx', 'replace storage mystore');
exec ctx_ddl.optimize_index('idx', 'rebuild', part_name=>'part1');

注意:

SEPARATE_OFFSETSオプションのみを有効にして既存の索引表を変更するプロシージャでは、データの再索引付けは行われません。