インデックス操作用のトランザクション ログのディスク領域Transaction Log Disk Space for Index Operations

適用対象: ○SQL Server XAzure SQL Database XAzure SQL Data Warehouse XParallel Data WarehouseAPPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

大規模なインデックス操作では、大量のデータが読み込まれるためにトランザクション ログがすぐにいっぱいになることがあります。Large-scale index operations can generate large data loads that can cause the transaction log to fill quickly. インデックス操作を確実にロールバックできるようにするには、インデックス操作が完了するまでトランザクション ログを切り捨てることができません。ただし、インデックス操作中にログをバックアップすることはできます。To make sure that the index operation can be rolled back, the transaction log cannot be truncated until the index operation has completed; however, the log can be backed up during the index operation. このため、トランザクション ログには、インデックス操作中のインデックス操作によるトランザクションと同時実行ユーザーによるトランザクションの両方を格納できるだけの十分な空き領域が必要です。Therefore, the transaction log must have sufficient room to store both the index operation transactions and any concurrent user transactions for the duration of the index operation. これは、インデックス操作がオフラインでもオンラインでも同じです。This is true for both offline and online index operations. オフライン インデックス操作中は基になるテーブルにアクセスできないので、ユーザー トランザクションはそれほど多くなく、ログの増大もそれほど速くない可能性があります。Because the underlying tables cannot be accessed during an offline index operation, there may be few user transactions and the log may not grow as quickly. オンライン インデックス操作では同時実行ユーザーによる操作を防ぐことができないので、大規模なオンライン インデックス操作で同時実行ユーザーによる膨大なトランザクションが発生すると、ログの切り捨てオプションが使用されずに、トランザクション ログが増大し続けることがあります。Online index operations do not prevent concurrent user activity, therefore, large-scale online index operations combined with significant concurrent user transactions can cause continuous growth of the transaction log without an option to truncate the log.

推奨事項Recommendations

大規模なインデックス操作を実行する場合は、次の推奨事項を考慮してください。When you run large-scale index operations, consider the following recommendations:

  1. 大規模なインデックス操作をオンラインで実行する前に、トランザクション ログを必ずバックアップし切り捨てを行います。また、予定しているインデックス トランザクションとユーザー トランザクションを格納できるだけの十分な領域をログのために用意しておきます。Make sure the transaction log has been backed up and truncated before running large-scale index operations online, and that the log has sufficient space to store the projected index and user transactions.

  2. インデックス操作の場合は、SORT_IN_TEMPDB オプションを ON に設定することを検討します。Consider setting the SORT_IN_TEMPDB option to ON for the index operation. この設定により、インデックス トランザクションが同時実行のユーザー トランザクションから分離されます。This separates the index transactions from the concurrent user transactions. インデックス トランザクションは、 tempdb データベースのトランザクション ログに格納され、同時実行ユーザー トランザクションはユーザー データベースのトランザクション ログに格納されます。The index transactions will be stored in the tempdb transaction log, and the concurrent user transactions will be stored in the transaction log of the user database. これにより、ユーザー データベースのトランザクション ログをインデックス操作中に必要に応じて切り捨てられるようになります。This allows for the transaction log of the user database to be truncated during the index operation if it is required. さらに、 tempdb データベースのログとユーザー データベース ログを別のディスク上に格納すれば、2 つのログで同じディスク領域を奪い合うことはありません。Additionally, if the tempdb log is not on the same disk as the user database log, the two logs are not competing for the same disk space.

    注意

    tempdb データベースとトランザクション ログに、インデックス操作を処理できるだけの十分なディスク領域があることを確認してください。Verify that the tempdb database and transaction log have sufficient disk space to handle the index operation. インデックス操作が完了するまで、 tempdb データベースのトランザクション ログを切り捨てることはできません。The tempdb transaction log cannot be truncated until the index operation is completed.

  3. インデックス操作の最小ログ記録を行うことができるデータベース復旧モデルを使用します。Use a database recovery model that allows for minimal logging of the index operation. これにより、ログのサイズを削減し、ログでログ領域がいっぱいになるのを防ぐことができます。This may reduce the size of the log and prevent the log from filling the log space.

  4. 明示的なトランザクションではオンライン インデックス操作を実行しないでください。Do not run the online index operation in an explicit transaction. ログの切り捨ては、明示的なトランザクションが終了するまで行われません。The log will not be truncated until the explicit transaction ends.

インデックス DDL 操作に必要なディスク領域Disk Space Requirements for Index DDL Operations

インデックスのディスク領域の例Index Disk Space Example