主要通过sys.database表中 log_reuse_wait 和 log_reuse_wait_desc 列来查看具体的造成延迟的原因
log_reuse_wait列的具体含义:
log_reuse_wait 值 log_reuse_wait_desc 值 描述
- 0:NOTHING 当前有一个或多个可重复使用的虚拟日志文件 (VLF)。
- 1:CHECKPOINT 自上次日志截断之后,尚未生成检查点,或者日志头尚未跨一个虚拟日志 (VLF) 文件移动。 (所有恢复模式)
这是日志截断延迟的常见原因。 有关详细信息,请参阅数据库检查点 (SQL Server)。 - 2:LOG_BACKUP 在截断事务日志前,需要进行日志备份。 (仅限完整恢复模式或大容量日志恢复模式)
完成下一个日志备份后,一些日志空间可能变为可重复使用。 - 3:ACTIVE_BACKUP_OR_RESTORE 数据备份或还原正在进行(所有恢复模式)。
如果数据备份阻止了日志截断,则取消备份操作可能有助于解决备份直接导致的此问题。 - 4:ACTIVE_TRANSACTION 事务处于活动状态(所有恢复模式):
一个长时间运行的事务可能存在于日志备份的开头。 在这种情况下,可能需要进行另一个日志备份才能释放空间。 请注意,长时间运行的事务将阻止所有恢复模式下的日志截断,包括简单恢复模式,在该模式下事务日志一般在每个自动检查点截断。
延迟事务。 “延迟的事务 ”是有效的活动事务,因为某些资源不可用,其回滚受阻。 有关导致事务延迟的原因以及如何使它们摆脱延迟状态的信息,请参阅延迟的事务 (SQL Server)。
长时间运行的事务也可能会填满 tempdb 的事务日志。 Tempdb 由用户事务隐式用于内部对象,例如用于排序的工作表、用于哈希的工作文件、游标工作表,以及行版本控制。 即使用户事务只包括读取数据(SELECT 查询),也可能会以用户事务的名义创建和使用内部对象, 然后就会填充 tempdb 事务日志。 - 5:DATABASE_MIRRORING 数据库镜像暂停,或者在高性能模式下,镜像数据库明显滞后于主体数据库。 (仅限完整恢复模式)
有关详细信息,请参阅数据库镜像 (SQL Server)。 - 6:REPLICATION 在事务复制过程中,与发布相关的事务仍未传递到分发数据库。 (仅限完整恢复模式)
有关事务复制的信息,请参阅 SQL Server Replication。 - 7:DATABASE_SNAPSHOT_CREATION 正在创建数据库快照。 (所有恢复模式)
这是日志截断延迟的常见原因,通常也是主要原因。 - 8:LOG_SCAN 发生日志扫描。 (所有恢复模式)
这是日志截断延迟的常见原因,通常也是主要原因。 - 9:AVAILABILITY_REPLICA 可用性组的辅助副本正将此数据库的事务日志记录应用到相应的辅助数据库。 (完整恢复模式)
有关详细信息,请参阅: AlwaysOn 可用性组概述 (SQL Server)。 - 10: - 仅供内部使用
- 11: - 仅供内部使用
- 12: - 仅供内部使用
- 13: OLDEST_PAGE 如果将数据库配置为使用间接检查点,数据库中最早的页可能比检查点日志序列号 (LSN) 早。 在这种情况下,最早的页可以延迟日志截断。 (所有恢复模式)
有关间接检查点的信息,请参阅数据库检查点 (SQL Server)。 - 14:OTHER_TRANSIENT 当前未使用此值。
日志截断延迟
- 上一篇:解决SQL Server日志空间满的方法
- 下一篇:SQL Server检查点