LSN 的三个部分是什么?

Jam*_*ins 2 sql-server logs transaction-log

我很好奇日志序列号 (LSN) 的 3 部分是什么以及它们是如何生成的。

日志序列号是一个不断增加的、由三部分组成的编号,它唯一地定义了日志记录在事务日志中的位置。来源

我环顾四周,发现至少有一个答案说我“不应该关心这些是如何生成的”,但我仍然想知道。

如果我运行,DBCC FILEHEADER ([AdventureWorks2014], 1)我得到的结果会显示我的 AdventureWorks 中一些重要的 LSN

最大LSN

45000000001600001

第一LSN

44000000084000074

重做起始LSN

45000000001600001

它们似乎确实有 3 个不同的部分,它们是什么,它们是什么意思,它们是如何生成的?

For*_*est 5

根据 Paul Randal 在他的 Pluralsight 课程“SQL Server:日志记录、恢复和事务日志”中的说法,LSN 由三部分组成:

  • 1) VLF 序列号(4 字节)
  • 2) 日志块号(4 字节)
  • 3)日志记录号(2字节)