データベ―スの容量拡張を行う場合によくある質問と、その回答について説明します。
インデックスのページ内の未使用率とは、格納スペースの空き率です。再編成でインデックスのページにキー値情報を格納するときに、ページ内にどの位の未使用領域を確保するのかを、0から99までの値で指定します。指定を省略すると、0が指定されたものとみなされます。
たとえば、格納スペースの空き率に30を指定すると、インデックスのページにはキー値情報が70%の割合で格納され、残り30%が未使用域となります。この状態で、すでに格納されているキー値に近いキー値情報を挿入した場合は、インデックスのページの残り30%の未使用域にキー値情報を格納します。
ところが、格納スペースの空き率に0を指定すると、インデックスのページにはキー値情報が100%の割合で格納され、未使用域が0%となります。この状態で、すでに格納されているキー値に近いキー値情報を挿入した場合は、インデックスのページに未使用領域(空き領域)がないため、キー値情報を格納する前にインデックスのページの分割を行います。このページの分割コストが性能に影響します。
インデックスのページの分割でどの程度の処理時間差が出るかについては、環境によって異なります。再編成後に、すでに格納されているキー値に近いキー値のレコードをどのくらい挿入するかで、インデックスの格納スペースの空き率を決定してください。
ポイント
空き率を設定する目安について
空き率の目的は、レコードの挿入や、インデックスキー更新などのレコードの更新に伴うインデックスのメンテナンスにおいて、ページ分割の発生割合を低下させることです。つまり、空き率を0%として再編成した直後に、インデックスキーとしてランダムにデータが挿入されると、レコード挿入のたびにページ分割が発生し、性能が劣化する恐れがあります。具体的な空き率の値としては、挿入や更新が多いか、または更新があまり発生しないかなど、そのDSIのアクセス形態によって切りわける必要があります。目安として、挿入や更新が多い場合は20~30%、あまり多くない場合は10%、少ないあるいはまったく発生しない場合は0%を指定することをお勧めします。
なお、例外として、インデックスキー値が昇順に追加されるようなケースでは、インデックスのページ分割は発生しないため、空き率の指定は不要です。
rdbalmdsiコマンドまたはDSI定義文で設定した容量拡張定義を無効にする方法は?
一度rdbalmdsiコマンドまたはDSI定義文で設定した自動容量拡張の定義を、コマンドなどを使用して無効にする方法はありません。
ただし、無効にした場合と同じ状態にする方法として、以下の方法があります。
rdbalmdsiコマンドを利用し、拡張契機(cオプション)で指定する値に、“0”を設定します。
これにより、残り容量がなくなるまで拡張されません。残り容量がなくなった時点で容量拡張が行われるようになります。
DSIを一度破棄し、再定義します。
これにより、rdbalmdsiコマンドまたはDSI定義文で定義した特定DSIに対する容量拡張情報は完全消去されます。
以下の手順で操作します。
rdbunlコマンドで対象DSI内のデータをファイルへ出力しておきます。
rdbddlexコマンドを利用し、対象DSIを破棄(DROP)します。
rdbddlexコマンドを利用し、対象DSIを再定義(CREATE)します。
このときDSI定義文にEXPAND OFFを指定してください。これによりDSI定義時に自動容量拡張の定義が設定されません。
rdbsloaderコマンドを利用し、1.で出力しておいたデータを格納しなおします。
注意
自動容量拡張を定義しない場合には、DSIの容量不足が発生しないように注意してください。
参照
詳細は、“RDB運用ガイド”の“データベースの再配置”を参照してください。
また、関連する質問として、“9.5.2 資源の容量を監視する”の“データベースの容量不足を事前に検知するには?”、“9.6.2 容量拡張する”の“データベースの容量拡張は可能か?”があります。必要に応じて参照してください。
ポイント
自動容量拡張指定について
容量拡張の指定を取りやめたい理由によっては、別の方法で問題が解決できる場合があります。
新たなディスクスペースを確保したので、今まで確保していたデータベーススペースを返却し、新たなスペースにデータを移動したい場合
rdbgcdsiコマンドをEオプション、およびpオプションを指定して実行することにより、容量拡張で増えた分のデータを、新たなデータベーススペースに移動させることができます。
ただし、rdbalmdsiコマンドまたはDSI定義文で定義した情報は有効になっているため、データベーススペースの空き容量が不足した場合には自動容量拡張機能が動作します。必要に応じてrdbalmdsiコマンドで自動容量拡張先や拡張契機を変更してください。
大量件数のデータを削除したため、容量拡張して利用したデータベーススペース領域を返却したい場合
rdbgcdsiコマンドをEオプションを指定して実行することにより、容量拡張で利用したデータベーススペースを、不要分だけ返却できます。
ただし、rdbalmdsiコマンドまたはDSI定義文で定義した情報は有効になっているため、必要に応じて定義情報を変更してください。
容量拡張定義する際、データベーススペース名を間違えてタイプしたため、データベーススペース名を正しく設定しなおしたい場合
rdbalmdsiコマンドを再度実行します。直前の定義情報は上書きされます。