技术开发 频道

SQL Server事务日志的物理和逻辑构架

  可以看到,对应的,VLF的数量变为4:

SQL Server事务日志的物理和逻辑构架

  而对于日志文件的增长,SQL Server使用了和创建数据库时相同的公式,也就是每次增长比如为2M,则按照公式每次增长4个VLFs.

  我们创建一个TestGrow数据库,指定日志文件为2M,此时有4个VLFS:

SQL Server事务日志的物理和逻辑构架

  当我们增长2M时,这个2M则是按照公式,再次分配4个VLFs:

SQL Server事务日志的物理和逻辑构架

  此时,这时能看到的VLFs数量应该为4+4=8个:

SQL Server事务日志的物理和逻辑构架

  由此可以看出,指定合适的日志文件初始大小和增长,是减少日志碎片最关键的部分.

  事务日志的逻辑组织构架

  当针对数据库对象所做的任何修改保存到数据库之前,相应的日志首先会被记录到日志文件。这个记录会被按照先后顺序记录到日志文件的逻辑末尾,并分配一个全局唯一的日志序列号(log sequence number,简称LSN),这个序列号完全是按照顺序来的,如果日志中两个序列号LSN2>LSN1,则说明LSN2所在LSN1之后发生的.

  由此可以看出,将日志文件分为多个文件除了磁盘空间的考虑之外。完全不会像数据那样可以并行访问,所以将日志文件分为多个完全不会有性能上的提升.

  LSN号可以看作是将日志文件和其记录数据之间的纽带.每一条日志不仅有LSN号,还有其对应事务的事务日志:

  一个简单的图片示例如下:

SQL Server事务日志的物理和逻辑构架

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

  ·每个事务的开始和结束。

  ·每次数据修改(插入、更新或删除)。这包括系统存储过程或数据定义语言 (DDL) 语句对包括系统表在内的任何表所做的更改。

  ·每次分配或释放区和页。

  ·创建或删除表或索引。

  对于LSN如何在ROLLBACK或者是ROLL FORWARD中以及在备份恢复过程中起作用,会在后续文章中提到

  总结

  本篇文章从事务日志的逻辑和物理构架简单介绍了事务日志的构成.这是理解SQL Server如何利用日志保证持久性和数据备份恢复的基础。下一篇文章将会介绍SQL Server在操作中会如何使用到日志文件。请继续关注《SQL Server事务日志在修改数据时的角色

0
相关文章