LSN 是什么?

作者:微软 来源: 日期:2010-9-3

LSN 即日志序列号。

SQL Server 事务日志中的每个记录都由一个日志序列号 (LSN) 唯一标识。LSN 是这样排序的:如果 LSN2 大于 LSN1,则 LSN2 所标识的日志记录描述的更改发生在日志记录 LSN1 描述的更改之后。

发生重大事件的日志记录的 LSN 对于构造正确的还原顺序可能很有用。因为 LSN 是有顺序的,所以可以比较它们是否相等(即 <、>、=、<=、>=)。构造还原顺序时,这种比较很有用。

日志记录按创建时的串行序列存储。每条日志记录都包含其所属事务的 ID。对于每个事务,与事务相关联的所有日志记录通过使用可提高事务回滚速度的向后指针挨个链接在一个链中。

数据修改的日志记录或者记录所执行的逻辑操作,或者记录已修改数据的前像和后像。前像是执行操作前的数据副本;后像是执行操作后的数据副本。

操作的恢复步骤取决于日志记录的类型:

  • 记录逻辑操作
    • 若要前滚逻辑操作,请再次执行该操作。
    • 若要回滚逻辑操作,请执行相反的逻辑操作。
  • 记录前像和后像
    • 若要前滚操作,请应用后像。
    • 若要回滚操作,请应用前像。

许多类型的操作都记录在事务日志中。这些操作包括:

  • 每个事务的开始和结束。
  • 每次数据修改(插入、更新或删除)。这包括系统存储过程或数据定义语言 (DDL) 语句对包括系统表在内的任何表所做的更改。
  • 每次分配或释放区和页。
  • 创建或删除表或索引。

回滚操作也记录在日志中。每个事务都在事务日志中保留空间,以确保存在足够的日志空间来支持由显式回滚语句或遇到错误引起的回滚。保留的空间量取决于在事务中执行的操作,但通常等于用于记录每个操作的空间量。事务完成后将释放此保留空间。

日志文件中从必须存在以确保数据库范围内成功回滚的第一条日志记录到最后写入的日志记录之间的部分称为日志的活动部分,即“活动日志”。这是进行数据库完整恢复所需的日志部分。永远不能截断活动日志的任何部分。

相关阅读

相关文章