テ キ ス ト 索 引 作 成 時 の ロ グ の 採 取
テキスト索引作成時には、必ずログを採取しましょう。ctx_output.start_log プロシージ ャで取得することができます。ログを取れば、現在どこまでテキスト索引作成が完了して いるかを確認することができます。
$R表 の キ ャ ッ シ ュ
$R表のDATA列(BLOB)は検索時に必ず参照される表ですが、LRUリストの最後尾 に置かれるため、すぐにDBブロックバッファ上から消されます。これをLRUリストの先頭 に置くには、
ALTER TABLE dr$<INDEX̲NAME>$r MODIFY LOB (CACHE READS);
または
ALTER TABLE dr$<INDEX̲NAME>$r MODIFY LOB (CACHE);
を実行します。なお、CACHE READSはR816からの新機能です。これを利用するために は、compatible=8.1.6.0.0以上に設定する必要があります。前者は読込み時だけLRU の先頭に置き、後者は読込み・書込みの両方でLRUの先頭に置きます。
URLデ ー タ ス ト ア
URLデータストアを用いれば、URLで指定されたドキュメントを全文検索対象とするこ とができます。URL データストアでは、複数スレッドを立ち上げてネットワーク先のドキュ
メントをインデキシングできますが、この時、DiskやCPUの他にネットワークがボトルネッ クになる可能性があります。テキスト索引作成時にはこのことに注意して下さい。
シ ソ ー ラ ス の 利 用
シソーラスは検索語句を予め定義済みの類義語に拡張して全文検索を行なう機能で す。シソーラスを使用すると、内部で検索語句の拡張が行なわれます。この検索語句の 拡張は高速に行われるため基本的にパフォーマンスに影響を与えることはありません。
しかし、検索語句が拡張されるというということは、全文検索パフォーマンスに影響を与 える場合があります。
パソコン パソコン or コンピュータ or 電脳
…
パソコン = コンピュータ パソコン = 電脳
… シソーラス辞書
入力 シソーラスによる展開
contains演算子へ
シソーラスを使用することによって検索パフォーマンスが劣化する場合、どのように拡 張されるかを確認し(ctx_query.explain プロシージャを利用)、拡張された検索文字列を
contains演算子に渡して、その検索パフォーマンスを確認して下さい。
テ キ ス ト 索 引 の パ ラ レ ル 索 引 作 成 に 関 す る 注 意
テキスト索引のパラレル索引作成は、ジョブ・キューを用いて実現されています。パラ レル索引作成を行なうCREATE INDEX 文を実行しても、実際にインデキシングが行な われるまでに、初期化パラメータJOB_QUEUE_INTERVALで指定した秒数、待機する場 合があります。
また、場合によっては、パラレル索引作成を行なった方が(行なわない場合より)索引 作成の時間がかかる場合があります。これは、データ量が少ない場合や、マシンスペッ クが低くパラレル指定を行なっても、リソースの競合が発生する場合に起こります。
常にパラレル索引作成が高速である訳ではありません。
メ モ リ サ イ ズ 指 定 に つ い て
テキスト索引作成時にトークンを一時的にメモリ上に格納しますが、そのメモリサイズ を指定することができます。このメモリ領域はSGAとは全く別の領域として確保されま す。
この値は大きな値である程、トークンの断片化が起こりにくくなるため、できるだけ大
きな値を指定して下さい。テキスト索引作成時はDBブロックバッファや共有プールは大 きくする必要がありませんので、それらの値を小さくして、索引作成メモリサイズを大きく 指定して下さい。また、トランザクションのサイズも大きくなるため、大きなロールバックセ グメントを用意して下さい。
基本的にメモリサイズが大きい方が、索引作成時間も短縮されます。しかし、ハードウ エアや各種設定によっては、逆に遅くなるケースもあるようですのでご注意下さい。