14.8.1 プラグインインデクスの遅延一括作成とは
プラグインインデクスを定義した表の行データを大量追加(又は大量更新)すると,プラグインインデクスへのキー追加処理が行われます。このため,大量の行データを追加すると,プラグインインデクスへのキー追加処理が性能を悪くする原因になることがあります。
行データを追加したときに,プラグインインデクスのデータ追加処理をしないで,データベース再編成ユティリティを使用して後で一括してプラグインインデクスのデータ追加処理ができます。これをプラグインインデクスの遅延一括作成といいます。プラグインインデクスの遅延一括作成を次の図に示します。
- 注※
-
系切り替え機能を使用する場合は,インデクス情報ファイルを共有ディスク上に作成してください。
- 〈この項の構成〉
(1) 前提条件
使用しているプラグインが,プラグインインデクスの遅延一括作成をサポートしているかどうかを確認してください。この機能をサポートしていないプラグインに対しては,この機能を使用できません。
このマニュアルの発行時点でこの機能をサポートしているプラグインは次のとおりです。
-
HiRDB Text Search Plug-in
(2) 利点
プラグインインデクスのデータ追加処理をしない分だけ,大量の行データを追加又は更新するUAPの実行時間(表データの作成時間)を短縮できます。
(3) 機能の適用範囲
この機能が適用されるのは,行の追加及び更新時だけです。すなわち,次に示すSQLに対して適用されます。
-
INSERT文
-
UPDATE文
行の削除(DELETE文)には適用されません。
(4) 適用基準
(5) 制限事項
プラグインインデクスの遅延一括作成をするときは,次に示す制限事項があります。
(a) プラグインインデクスを一括作成するまで,追加又は更新した行に対してプラグインインデクスを使用した検索をしないでください
UAPの実行後からプラグインインデクスを一括作成するまでの間は,表データとプラグインインデクスデータが不整合の状態になっています。※
このときに,追加又は更新した行に対してプラグインインデクスを使用した検索を実施すると,不正な処理結果を返すことがあります。したがって,プラグインインデクスを一括作成するまでは,追加又は更新した行に対してプラグインインデクスを使用した検索をしないでください。ただし,プラグインインデクスを使用しなければ,正しい処理結果が返ります。
なお,追加又は更新した行以外の行に対しては,プラグインインデクスを使用した検索ができます。
- 注※
-
データを追加した場合,プラグインインデクスデータはUAP実行前の状態になっています。データを更新した場合,更新前のプラグインインデクスデータは削除された状態になっています。
このように,追加又は更新した行については,表データとプラグインインデクスデータが不整合の状態になっています。
(b) プラグインインデクスを一括作成するまで,通常のUAPではプラグインインデクスを更新できません
プラグインインデクスを一括作成するまで,通常のUAP(プラグインインデクスの遅延一括作成を指定していないUAP)ではプラグインインデクスを更新できません。ただし,PURGE TABLE文は実行できます。
(c) 同一表に対してUAPは同時に実行できません
インデクス情報ファイルには,排他モード(EX)で排他が掛かります。このため,同一表に対してこの機能を使用したUAPは同時に実行できません。
(d) プラグインインデクスを一括作成するまで追加データロードはできません
プラグインインデクスを一括作成するまで追加データロードはできません。ただし,表を横分割している場合は,遅延一括作成機能を使用してデータを格納していないRDエリアに対して,UAPによる処理と追加データロードができます。
(e) プラグインインデクスを一括作成するまでプラグインインデクス名を変更しないでください
プラグインインデクスを一括作成する前に,ALTER INDEXでプラグインインデクス名を変更すると,UAP実行時に出力したインデクス情報ファイルではプラグインインデクスの一括作成ができなくなります。一括作成前にプラグインインデクス名を変更した場合,プラグインインデクス名を元に戻してプラグインインデクスを一括作成した後で,再度プラグインインデクス名を変更してください。
(f) プラグインインデクスを一括作成するまでプラグインインデクスが格納されているRDエリア名を変更しないでください
プラグインインデクスを一括作成する前に,データベース構成変更ユティリティ(pdmod)でプラグインインデクスが格納されているRDエリア名を変更すると,プラグインインデクスの一括作成ができなくなります。一括作成前にRDエリア名を変更した場合,RDエリア名を元に戻してプラグインインデクスを一括作成した後で,再度RDエリア名を変更してください。