当前位置:Gxlcms > 数据库问题 > sqlserver内存管理之lazy writer

sqlserver内存管理之lazy writer

时间:2021-07-01 10:21:17 帮助过:2人阅读

  任何在缓冲区被修改的页都会被标记为“脏”页。将这个脏页写入到数据磁盘就是CheckPoint或者Lazy Writer的工作.前面就大体说了一下checkpoint,这会就简单的理解一下这个lazy writer.

    Lazy Writer存在的目的是对缓冲区进行管理。当缓冲区达到某一临界值时,Lazy Writer会将缓冲区内的脏页存入磁盘文件中,而将未修改的页释放并回收资源。
我们知道,当执行一条语句的时候 比如:         begin  tran         insert  into table_name(age)  values(1111) commit   --rollback 暂且分析一下语句的执行过程 1:begin train写入缓冲区的日志 2:缓冲区日志写入操作 3:将数据插入到缓冲区修改页 4:缓冲区日志写入commit 5:提交到事务日志 当commit提交事物的时候,sqlserver的预写机制是先将操作写入事务日志(上一篇文章关于这块还是写的有错的,因为事务日志是commit的时候提交到日志文件的,所以说缓冲区是不存在事务日志的操作的,也就是说checkpoint和lazy writer发生的时候,只会将脏页写入到MDF文件当中) 下面搬一张宋大神的图来看一下,稍作修改,很直观:   技术分享
下面主要列举一下检查点和懒惰写之间的差别,其实这些差别已经是众所周知了,但是我们还是列举一下两者之间的区别供大家学习一下: Checkpoint和lazyWriter都会将缓冲区内脏页写入到磁盘; lazywriter会更新缓存区空闲可用列表,而checkpoint不会; checkpoint操作会被记录到数据库日志中,而lazywriter不会; lazywriter是内存达到一个临界值的时候自动发生,确保缓存的使用,而检查点则不关心缓存用了多少,而是自动发生.

sqlserver内存管理之lazy writer

标签:

人气教程排行