5.4.2 テキストインデクスのインデクスページ内の未使用領域の確保(PCTFREE)
CREATE INDEX文のPCTFREEで,テキストインデクスのインデクスページ内の未使用領域をどれだけ確保するか指定できます。
テキストインデクスが定義されている表に対して行を追加した場合,または行を更新した場合に,インデクスキーの格納対象となるインデクスページに未使用領域がないと,テキストインデクスのインデクスページスプリットが発生します。テキストインデクスのインデクスページスプリットについては,「(2) テキストインデクスのインデクスページスプリット」を参照してください。
テキストインデクスのインデクスページスプリットが発生すると,ディスクのI/O回数が増加するため,HADBの性能が低下するおそれがあります。そのため,操作系SQLのINSERT文による行の追加,およびUPDATE文による行の更新を行う表に定義するテキストインデクスについては,インデクスページ内に未使用領域を確保してください。
(1) テキストインデクスのインデクスページ内に未使用領域を確保するときの目安
テキストインデクスのインデクスページ内に未使用領域を確保するときの目安を次に示します。
- 表に対して追加および更新する行数が見積もれる場合
-
表に対して追加および更新する行数分,インデクスキーが増加します。未使用領域には,次に示す計算式で求めた値を指定してください。
計算式(単位:%)
データページ構築時の行数とは,対象の表に初めてadbimportコマンドを実行して格納した表データの行数のことです。
- 表に対して追加および更新する行数が見積もれない場合
-
未使用領域には30%(PCTFREEの省略値)を指定してください。
- 表に対して追加および更新を行わない場合(参照だけを行う場合)
-
未使用領域には0%を指定してください。
次に示すコマンドを実行すると,PCTFREEに指定した未使用領域の比率に従ってデータが格納されます。
-
adbimportコマンド
-
作成モードでデータインポートする場合(-dオプションを指定した場合)
-
バックグラウンドインポート機能を使用する場合(-bオプションを指定した場合)
-
追加モードでデータインポートする場合(-dオプションと-bオプションを指定しない場合)
-
-
adbidxrebuildコマンド
-
adbmergechunkコマンド
-
adbunarchivechunkコマンド
(2) テキストインデクスのインデクスページスプリット
テキストインデクスを定義した実表にデータを追加したり,データを更新したりした場合,テキストインデクスのインデクスページにデータが追加されます。このとき,データを追加するインデクスページに空きがない場合,新規にテキストインデクスのインデクスページを確保します。これを,テキストインデクスのインデクスページスプリットといいます。テキストインデクスのインデクスページスプリットの例を次の図に示します。