インデックス断片化解消について

KOPosted by

SQLサーバに対しての機能でインデックス断片化再構成と再構築があり、なにがどう違うのかぱっとみ良くわからなかったのでそもそもどんな事なの?というところを調べました。

SQLには各テーブルにインデックスが設定されており、使用しているうちに断片化してレスポンスが悪化していきます。それらを解消するのが再構成と再構築になります。

インデックスの再構築と再構成の最も大きな違いは、再構築がひとつのトランザクションでインデックスを完全に再作成するのに対して、再構成は処理単位ごと (処理単位はページ) にトランザクションが分割されていて、リーフページ間でインデックス行を移動させることで行を前に詰めて断片化を解消しているという点です。

再構築はひとつのトランザクションですので、キャンセルすれば当然そのトランザクションはロールバックされ、トランザクション開始前の状態、つまり、断片化した状態に戻されます。一方、再構成はトランザクションが分割されているため、キャンセルしても、既に完了しているトランザクションの結果は維持されます。

上記のことから途中中断が予想されるような時間に余裕がない時などには再構成、まとまった時間が確保できる場合は時間の振れ幅が少ない再構築が良いとされます。

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA