ページの先頭行へ戻る
Symfoware Server V10.0.0 トラブルシューティング集

11.1.2 容量拡張を行う

データベ―スの容量拡張を行う場合によくある質問と、その回答について説明します。

「インデックスのページ内未使用率」とは

インデックスのページ内の未使用率とは、格納スペースの空き率です。再編成でインデックスのページにキー値情報を格納するときに、ページ内にどの位の未使用領域を確保するのかを、0から99までの値で指定します。指定を省略すると、0が指定されたものとみなされます。

たとえば、格納スペースの空き率に30を指定すると、インデックスのページにはキー値情報が70%の割合で格納され、残り30%が未使用域となります。この状態で、すでに格納されているキー値に近いキー値情報を挿入した場合は、インデックスのページの残り30%の未使用域にキー値情報を格納します。

ところが、格納スペースの空き率に0を指定すると、インデックスのページにはキー値情報が100%の割合で格納され、未使用域が0%となります。この状態で、すでに格納されているキー値に近いキー値情報を挿入した場合は、インデックスのページに未使用領域(空き領域)がないため、キー値情報を格納する前にインデックスのページの分割を行います。このページの分割コストが性能に影響します。

インデックスのページの分割でどの程度の処理時間差が出るかについては、環境によって異なります。再編成後に、すでに格納されているキー値に近いキー値のレコードをどのくらい挿入するかで、インデックスの格納スペースの空き率を決定してください。

ポイント

空き率を設定する目安について

空き率の目的は、レコードの挿入や、インデックスキー更新などのレコードの更新に伴うインデックスのメンテナンスにおいて、ページ分割の発生割合を低下させることです。つまり、空き率を0%として再編成した直後に、インデックスキーとしてランダムにデータが挿入されると、レコード挿入のたびにページ分割が発生し、性能が劣化する恐れがあります。具体的な空き率の値としては、挿入や更新が多いか、または更新があまり発生しないかなど、そのDSIのアクセス形態によって切りわける必要があります。目安として、挿入や更新が多い場合は20~30%、あまり多くない場合は10%、少ないあるいはまったく発生しない場合は0%を指定することをお勧めします。

なお、例外として、インデックスキー値が昇順に追加されるようなケースでは、インデックスのページ分割は発生しないため、空き率の指定は不要です。

rdbalmdsiコマンドまたはDSI定義文で設定した容量拡張定義を無効にする方法は?

一度rdbalmdsiコマンドまたはDSI定義文で設定した自動容量拡張の定義を、コマンドなどを使用して無効にする方法はありません。

ただし、無効にした場合と同じ状態にする方法として、以下の方法があります。

注意

自動容量拡張を定義しない場合には、DSIの容量不足が発生しないように注意してください。

参照

詳細は、“RDB運用ガイド”の“データベースの再配置”を参照してください。
また、関連する質問として、“9.5.2 資源の容量を監視する”の“データベースの容量不足を事前に検知するには?”、“9.6.2 容量拡張する”の“データベースの容量拡張は可能か?”があります。必要に応じて参照してください。

ポイント

自動容量拡張指定について

容量拡張の指定を取りやめたい理由によっては、別の方法で問題が解決できる場合があります。

  • 新たなディスクスペースを確保したので、今まで確保していたデータベーススペースを返却し、新たなスペースにデータを移動したい場合
    rdbgcdsiコマンドをEオプション、およびpオプションを指定して実行することにより、容量拡張で増えた分のデータを、新たなデータベーススペースに移動させることができます。
    ただし、rdbalmdsiコマンドまたはDSI定義文で定義した情報は有効になっているため、データベーススペースの空き容量が不足した場合には自動容量拡張機能が動作します。必要に応じてrdbalmdsiコマンドで自動容量拡張先や拡張契機を変更してください。

  • 大量件数のデータを削除したため、容量拡張して利用したデータベーススペース領域を返却したい場合
    rdbgcdsiコマンドをEオプションを指定して実行することにより、容量拡張で利用したデータベーススペースを、不要分だけ返却できます。
    ただし、rdbalmdsiコマンドまたはDSI定義文で定義した情報は有効になっているため、必要に応じて定義情報を変更してください。

  • 容量拡張定義する際、データベーススペース名を間違えてタイプしたため、データベーススペース名を正しく設定しなおしたい場合
    rdbalmdsiコマンドを再度実行します。直前の定義情報は上書きされます。