大規模なインデックス操作では、大量のデータ読み込みが生成され、トランザクション ログがすぐにいっぱいになる可能性があります。 インデックス操作をロールバックできるようにするには、インデックス操作が完了するまでトランザクション ログを切り捨てることはできません。ただし、ログはインデックス操作中にバックアップできます。 そのため、トランザクション ログには、インデックス操作のトランザクションと、インデックス操作の期間中の同時実行ユーザー トランザクションの両方を格納するための十分なスペースが必要です。 これは、オフラインとオンラインの両方のインデックス操作に当てはまります。 オフライン インデックス操作中に基になるテーブルにアクセスできないため、ユーザー トランザクションが少なく、ログが急速に増加しない可能性があります。 オンライン インデックス操作は同時ユーザー アクティビティを妨げるものではありません。そのため、大規模なオンライン インデックス操作と同時に大量のユーザー トランザクションを組み合わせると、ログを切り捨てるオプションなしでトランザクション ログが継続的に増加する可能性があります。
推奨事項
大規模なインデックス操作を実行する場合は、次の推奨事項を考慮してください。
大規模なインデックス操作をオンラインで実行する前に、トランザクション ログがバックアップされ、切り捨てられていることを確認し、ログに投影インデックスとユーザー トランザクションを格納するための十分な領域があることを確認します。
インデックス操作のSORT_IN_TEMPDB オプションを ON に設定することを検討してください。 これにより、同時ユーザー トランザクションからインデックス トランザクションが分離されます。 インデックス トランザクションは tempdb トランザクション ログに格納され、同時実行ユーザー トランザクションはユーザー データベースのトランザクション ログに格納されます。 これにより、必要に応じて、インデックス操作中にユーザー データベースのトランザクション ログを切り捨てることができます。 さらに、 tempdb ログがユーザー データベース ログと同じディスク上にない場合、2 つのログは同じディスク領域と競合しません。
注
tempdb データベースとトランザクション ログに、インデックス操作を処理するための十分なディスク領域があることを確認します。 インデックス操作が完了するまで 、tempdb トランザクション ログを切り捨てることはできません。
インデックス操作のログ記録を最小限に抑えるデータベース復旧モデルを使用します。 これにより、ログのサイズが小さになり、ログの領域がいっぱいになるのを防ぐことができます。
明示的なトランザクションでは、オンライン インデックス操作を実行しないでください。 明示的なトランザクションが終了するまで、ログは切り捨てされません。