データベースを再編成する際によくある質問と、その回答について説明します。
オンライン業務中にデータベースの再編成は可能か?
rdbgcdsiコマンドで、データベースをDSI単位に再編成できます。
再編成対象のDSIだけをオフラインにすることにより、オンライン業務を行いながらデータベースの再編成することができます。再編成対象のDSIをオフラインにするには、rdbexdsiコマンドを使用します。
再編成には以下の2種類のモードがあります。
DSIの容量拡張を伴わないモード
DSIの容量拡張を伴うモード
参照
詳細は、“RDB運用ガイド”の“DSIの動的切離し”、および“再編成”を参照してください。
データベースの再編成は必要か?
以下の場合に該当し、かつ、ひんぱんに挿入や削除を繰り返し行っている場合には、表やインデックスの格納効率が悪くなったり、検索性能などが悪くなる可能性があります。このような場合にはデータベースの再編成をお勧めします。
DSO定義でORDER(0)を指定したSEQUENTIAL構造にしている場合
表にインデックスを付けている場合
参照
詳細は、“RDB運用ガイド”の“再編成”を参照してください。
行排他を使用時に、DSI内に発生する削除領域が同一トランザクションで再使用されない
行排他を使用する場合、DELETE文またはUPDATE文によりDSI内に発生する削除領域は、定義時にORDER(1)を設定していても同一トランザクションでは再使用されません。
たとえば、DSIの60%の領域に格納されているデータをDELETE文ですべて削除し、同一トランザクションで同じ件数をINSERT文により格納しようとしても、削除領域には格納されず領域不足のエラーとなります。自動容量拡張が設定されている場合は拡張が行われます。
バッチ業務などで大量の更新系のSQL文を発行する場合には、排他の単位をDSI単位またはページ単位にするか、COMMIT文によりトランザクションを細かく区切って実行してください。