索引操作的事务日志磁盘空间

大规模索引操作可能导致大量数据负载,从而使事务日志迅速填满。 若要确保索引操作可以回滚,在索引操作完成之前,无法截短事务日志;但是,可以在索引操作期间备份日志。 因此,事务日志必须有足够的空间来存储索引作事务和索引作期间的任何并发用户事务。 这对脱机和联机索引操作都适用。 由于无法在脱机索引作期间访问基础表,因此用户事务可能很少,并且日志可能不会很快增长。 联机索引作不会阻止并发用户活动,因此,大规模联机索引作与大量并发用户事务相结合可能会导致事务日志持续增长,而无需选择截断日志。

建议

运行大规模索引作时,请考虑以下建议:

  1. 在实时运行大规模索引操作之前,请确保事务日志已备份和截断,并且日志有足够的空间来存储预期的索引和用户事务。

  2. 请考虑将索引操作的 SORT_IN_TEMPDB 选项设置为 ON。 这会将索引事务与并发用户事务分开。 索引事务将存储在 tempdb 事务日志中,并发用户事务将存储在用户数据库的事务日志中。 这允许在索引作期间截断用户数据库的事务日志(如果需要)。 此外,如果 tempdb 日志与用户数据库日志不在同一磁盘上,则两个日志不会争用相同的磁盘空间。

    注释

    验证 tempdb 数据库和事务日志是否有足够的磁盘空间来处理索引作。 在索引作完成之前,无法截断 tempdb 事务日志。

  3. 使用允许最小化索引操作日志记录的数据库恢复模式。 这可能会减小日志的大小,并阻止日志填充日志空间。

  4. 不要在显式事务中进行联机索引操作。 日志在显式事务结束之前不会被截断。

用于索引DDL操作的磁盘空间要求

索引磁盘空间示例