码迷,mamicode.com
首页 > 数据库 > 详细

Sql Server 事务日志

时间:2015-07-01 21:58:12      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:

     Sql Server事务日志文件是数据库文件的重要组成部分,事务日志主要用来存放数据库的修改记录。数据库为了得到更高的写入效率和性能,同时保证ACID特性,数据在写入时,会将更新先写入事务日志,因为事务日志是连写的,所以写事务会比较快。简单来说,顺序写入时,磁盘的磁头会保持在一定的区域内连续写入,而数据写入数据文件时,有随机性,磁盘的磁头移动消耗的时间要比数据写入日志文件时多。

      Sql Server对于事务日志文件的管理,是将日志文件在逻辑上分成若干个文件(VLFS),方便管理。

      创建一个1M的日志文件

      技术分享

       执行DBCC Loginfo

       技术分享

       在此可以看到事务日志被分成了4个虚拟的日志文件,那么SQL Server创建数据库时,日志文件的大小和所分配的VLFS数量有什么关系呢?如果日志文件增加,VLFS是如何变化的呢 ?

        VLFS个数由SQL Server管理,当Create或Alter Ldf文件时,SQL Server根据初始值或者增量的大小分配VLFS文件数。LDF文件每次增加的数值和每次分配的VLFS个数如下

         

ldf文件的大小

VLF的数量

1M到64M

4

64M到1GB

8

大于1GB

16

      

      对数据库的所有修改在写入数据文件之前,会先记录到事务日志中。日志记录会按照先后顺序记录到日志文件的逻辑末尾,并分配一个全局唯一的日志序列号(Log Sequence  Number),这个序列号按照顺序分配。

技术分享

在日志中,有活动日志的概念,可以理解为未写入数据文件的事务日志。

技术分享

当数据库做CheckPoint,已提交的日志数据会刷新到数据文件中,则活动日志区间会前移,一直到未提交的日志序列号。

技术分享

在简单日志模式下,CheckPoint之后,非活动日志的内容将会被清空,清空之后的日志空间可以被冲用。这也是简单日志模式下日志文件总是很小的原因。

技术分享

在完整或批量日志模式下,只有备份日志后,日志空间才能被重用。

 

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

每个事务的开始和结束

每次数据修改

每次分配或释放区或者页

创建删除表或者索引

Sql Server 事务日志

标签:

原文地址:http://www.cnblogs.com/alexwu/p/4614409.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!