UPDATE INDEX コマンド

実際の索引更新が開始される前に、更新操作に必要なディスク・スペースを確認します。 問題がなければ索引の更新処理が続行されます。

目的

単一の更新処理に必要なディスク・スペースが計算され、必要と見積もられたスペースがない場合は、索引の更新が終了します。 計画の考慮事項 を参照してください。

索引付け処理を開始し、索引に関連付けられたテキスト列の現在の内容を反映し、索引を最新の状態に更新します。

更新の実行中も、CONTAINS 述部を使用した検索が可能です。 アクティブ化されたキャッシュ結果表を持つ索引の場合、更新時にストアード・プロシージャーによる検索も可能です。 ただし、変更されたテキストがフルテキスト索引にまだコミットされていないにもかかわらず、キャッシュ表の列が新しい値を表示する可能性があります。

CREATE INDEX コマンドで RECREATE INDEX ON UPDATE オプションを使用すると、再作成前に索引がクリアされます。 更新が完了するまで、空の結果が戻されます。

許可

ステートメントの許可 ID には、以下の特権が少なくとも 1 つ含まれていなければなりません。
  • テキスト索引が定義されている表またはニックネームに対する CONTROL 特権
  • DATAACCESS 権限

前提条件

インスタンス所有者は、DATAACCESS を持つ DBADM 権限を保持している必要があります。 バージョン 9.7 では、SYSADM は SECADM および DBADM 特権を保持しなくなりました。 SECADM は、 UPDATE INDEX コマンドを実行する前に、DATAACCESS を持つ DBADM をインスタンス所有者に明示的に付与する必要があります。

コマンド構文

Read syntax diagramSkip visual syntax diagramUPDATE INDEX index-schema-"." index-nameFOR TEXTREORGANIZECOMMITCOUNTcountUSING UPDATE MINIMUMSKIPDISKSPACECHECK|connection-options|
connection-options
Read syntax diagramSkip visual syntax diagramCONNECT TOdatabase-nameUSERuseridUSINGpassword

コマンド・パラメーター

index-schema
テキスト索引のスキーマ。 これは、 CREATE INDEX コマンドで指定されます。 スキーマが指定されていない場合は、 Db2® 接続のユーザー ID が使用されます。
index-name
テキスト索引の名前。 これは、 CREATE INDEX コマンドで指定されます。
REORGANIZE
テキスト列が頻繁に更新されると、索引へのその後の更新が非効率になる可能性があります。 更新処理を再び効率的にするには、索引を再編成します。 索引が再編成を必要としているかどうかを判別するには、DB2EXT.TEXTINDEXES ビュー を使用します。

索引を手動で検査および再編成しないようにするには、 CREATE INDEX コマンドの REORGANIZE AUTOMATIC オプションを使用します。

注: 再編成処理は、定期的な更新の後に行われます。
USING UPDATE MINIMUM
CREATE INDEX コマンドの UPDATE MINIMUM 設定を使用し、指定された変更数に達した場合にのみインクリメンタル更新を開始します。 テキスト保持ステージング・インフラストラクチャーが構成されている場合、合計の変更数が考慮されます。 デフォルトでは、無条件に更新を開始します。

分散データベースの場合、UPDATE MINIMUM は各パーティションでチェックされます。

COMMITCOUNT count
INTEGER 値> = 0 は、インクリメンタル索引更新のために検索エンジンおよび Db2 によって 1 つのトランザクションで処理される文書の数を決定します。 この値は、ALTER INDEX コマンドを使用して変更できます。

ただし、CREATE INDEX コマンドの後の最初の更新、または RECREATE INDEX ON UPDATE オプションによる更新などの初期更新の場合、COMMITCOUNT を無視する論理トランザクションが 1 つだけ存在します。

索引付けのスループットに大きな悪影響を与えるため、ゼロ以外の COMMITCOUNT を使用することは推奨されません。

SKIPDISKSPACECHECK
このオプションを指定すると、増分索引更新のためのディスク・スペースのチェックがスキップされます。 デフォルトでは、ディスク・スペースは索引更新の操作ごとにチェックされます。
CONNECT TO database-name
このコマンドのターゲットであるデータベースの名前。 DB2DBDFT が設定されており、 ユーザーがサーバーでコマンドを実行している場合は、 このパラメーターを省略できます。 ユーザー ID には必須 Db2 許可がなければならないことに注意してください。
USER userid USING password
userid および password を使用してデータベースに接続します。 指定しない場合は、パスワードなしで現行ユーザー ID から接続が試行されます。

使用上の注意

このコマンドは同期的に実行します。 パーティション・データベース環境のすべての必要な Db2 論理/物理パーティションで更新処理を開始します。 所要時間は、索引付けする文書数および既に索引付けされた文書数によって 異なります。 更新の状況は、索引ごとに作成されるビューを介して表示することができます。 このビューの名前は、列 EVENTVIEWNAME の DB2EXT.TEXTINDEXES から 検索できます。

処理済みのコミット文書の数を表示するには、2 つのオプションがあります。 どのくらいの文書が索引にコミット済みであるかを 判別するには、DB2EXT.TEXTINDEXES (NUMBER_DOCS) ビューを使用します。 変更の開始、コミット、および更新処理の完了に関する情報も、 索引に関連したイベント・ビューを使用します。

索引更新がまだアクティブな間に処理された文書の数を表示するには、 CONTROL LIST ALL LOCKS FOR INDEX コマンドを使用します。

注: ビューには、接続された区画からの情報のみが表示されます。

複数の物理パーティションを使用する基本表に対して増分更新を行う場合は、 各パーティションの時刻が同期している必要があります。 時刻が同期していないと、 更新が失われたり、まったく実行されなかったりする可能性があります。

次のコマンドのいずれかが索引上で実行中の場合には、このコマンドを発行できません。
  • CLEAR EVENTS
  • ALTER INDEX
  • DROP INDEX
  • ACTIVATE CACHE
  • DEACTIVATE CACHE
  • UPDATE INDEX
非アクティブ化された永続キャッシュ結果表を使用して索引を更新した後、永続キャッシュは削除され、次の ACTIVATE CACHE コマンドによって、データベースの内容に基づいて再作成されます。

ユーザーがこのコマンドに割り込んだ場合、更新機能に関係する処理はすべて停止します。 COMMITCOUNT が増分更新で使用された場合は、 一部の更新が既にコミットされていて索引内で参照でき、他の更新については 新たな更新コマンドが必要な場合があります。 索引更新処理を強制的に中断すると、 索引が破損する可能性があります。

索引の自動更新を停止するには、 更新サービスに使用されるパーティション上で索引更新コマンドを実行中の Db2 インスタンス所有者処理を検索します。 すべてのパーティション上でこの処理および更新処理を停止します。

注: このコマンドは、すべてのパーティションでの索引作成と初期索引更新のために 2 つの別個のフェーズで機能するため、 db2text drop index コマンドを発行して、索引が部分的に使用可能でないことを確認してください。 このコマンドが発行されない場合は、手動更新コマンドまたは更新頻度オプションによって起動される次回の更新で、一貫性のある状態を確保するために、完全な再索引付けが実行されます。
Changes to the database
  • イベント表への挿入
  • 索引ログ表、および索引に対するテキスト保持ステージング表 (構成されている場合) からの削除
レプリケーション・キャプチャー表を使用する場合、 データベースに以下の変更が加えられます。
  • 最初の更新が開始する前に、IBMSNAP_SIGNAL 表にシグナルが追加される。
  • 増分更新後に、IBMSNAP_PRUNE_SET の同期点が変更される。