sqlserver内存管理之lazy writer

news/2024/7/20 15:53:38 标签: 运维, 内存管理, 数据库

  任何在缓冲区被修改的页都会被标记为“脏”页。将这个脏页写入到数据磁盘就是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文件当中)
下面搬一张宋大神的图来看一下,稍作修改,很直观:
 
内存管理之lazy <wbr>writer" src="http://s9.sinaimg.cn/mw690/001TpKNizy6V5Ezqlni18&690" alt="4:sqlserver内存管理之lazy <wbr>writer" name="image_operate_56131441092206847" width="478" height="409" />
下面主要列举一下检查点和懒惰写之间的差别,其实这些差别已经是众所周知了,但是我们还是列举一下两者之间的区别供大家学习一下:
Checkpoint和lazyWriter都会将缓冲区内脏页写入到磁盘;
lazywriter会更新缓存区空闲可用列表,而checkpoint不会;
checkpoint操作会被记录到数据库日志中,而lazywriter不会;
lazywriter是内存达到一个临界值的时候自动发生,确保缓存的使用,而检查点则不关心缓存用了多少,而是自动发生.

转载于:https://www.cnblogs.com/shengdimaya/p/5403931.html


http://www.niftyadmin.cn/n/515523.html

相关文章

C#另外一个new类的方式Ico?以及App.config的使用

转载&#xff1a; https://blog.csdn.net/dianque7027/article/details/102066782 实现&#xff1a;https://download.csdn.net/download/weixin_42401291/14074553 以及App.config的使用&#xff0c;读取xml文件进行解析 同理可以实例化接口 static void Main(string[] args…

FZU 1005 Fast Food(dp)

题意&#xff1a;输入n&#xff0c;k&#xff0c;然后输入n个数&#xff0c;这n个数表示距离起点的距离&#xff0c;现在要选取k个点&#xff0c;使得距离和最小。 分析&#xff1a;我们求的是从n个点中选取k个点使得距离最小&#xff0c;即dp[n][k],那么dp[n][k]为dp[n-1][k-1…

C#线程池控制Semaphore

目的&#xff1a;控制线程数量执行某些代码、避免蜂拥进入 的异步执行导致系统 崩溃。 使用&#xff1a; 1. Semaphore Semaphore new Semaphore(3, 3); // 控制线程数 2. public void StatisticsDate(object store){ Semaphore.WaitOne();//进入线程池控…

C#使用MySql进行操作

1.安装Mysql&#xff08;网上教程有&#xff09; 2.创建项目webapi 3.引用dll一般在&#xff08;安装MySQL就有的没有参考&#xff1a;ASP.NET 连接MySQL数据库 详细步骤 - wusir - 博客园&#xff09;&#xff1a;C:\Program Files (x86)\MySQL\MySQL Connector Net 8.0.23\…

进度条第八周

第八周 所花时间&#xff08;包括上课&#xff09;&#xff1a; 周一&#xff1a;上午两小时上课时间&#xff0c;下午花了两小时查阅相关书籍。 周二&#xff1a;下午花了一个小时配置所需环境。 周四&#xff1a;开始开站立会议&#xff0c;录制视频花了两小时。 周五&a…

关于EF翻页查询数据库

1./// <summary> /// 翻页查询 /// </summary> /// <typeparam name"Tkey"></typeparam> /// <param name"pageSize">每页大小</param> /// <param name"pageIndex&…

判断栈的出栈顺序是否正确

一 问题描述&#xff1a; 两个数组pPush和pPop分别存储了压栈序列和出栈序列&#xff0c;如何判断出栈序列是否正确&#xff0c;假设元素不重复。 需要实现的函数&#xff1a; bool isStackOutRight(int *stackIn,int *stackOut,int length) 二 举例&#xff1a; pPush中序列为…

html指定轮动调的高度(js)

1.设置标签id&#xff1a;ChatRecordId 2.var ex document.getElementById("ChatRecordId"); ex.scrollTop ex.scrollHeight;