mysql 脏页回写_将脏页写回磁盘

'SQLServer:Buffer Manager\Page writes/sec'  :Number of physical database page writes issued per second

我们可以通过这个性能计数器(下文中简称PW)来观察SQLSERVER何时会将脏页(这里不包含日志)写回磁盘。文中讨论的脏页均为数据页,不包含脏日志(虽然SQLSERVER认为日志也是脏的…)

Checkpoint: Checkpoint发生是,SQLSERVER会将脏页(包含了未提交事务脏页和已提交事务的脏页)写回磁盘。 Checkpoint的作用是缩短数据库恢复(recovery)的时间和提升磁盘性能。如果我们禁止了checkpoint(traceflag 3505),会发现PW降低很多,有些时候甚至会变成0,相应的磁盘IO也会减少。 所以如果数据文件的磁盘的IO写操作存在瓶颈(确定这是磁盘的瓶颈而不是其它因素引起的),可以尝试降低Checkpoint发生的频率(recovery interval(min)选项).世界上没有免费的午餐,这样做的后果就是数据库RECOVERY时间会相应的变长。

下面的图例反映了Checkpoint和PW的关系。我在12:00AM将recovery interval(min)设置成了60,可以看到,PW的值有了明显的下降.. 如果查看磁盘写相关的性能计数器,您也会发现这些性能计数器的数值有明显下降,在某些情况下数值甚至会变成0!. 在2:20pm和5:00pm时,PW也随着checkpoint迅速上升

fcdef571aab6014a3e242af85aa491b5.png

Lazywriter:lazywriter运行时,如果检测到freeing memory buffers低于某个值(和buffer pool整体的小有关),会根据LRU算法将符合条件的数据页置换到free buffer,如果这些数据页是脏页,则也会将他们踢回硬盘。 Lazywriter在遇到内存压力时才会出现上述行为,上图中的PW没有归零,就是因为Lazy writer不停将脏页写回磁盘。我们可以通过Soft-NUMA来控制lazy wirter(http://blogs.msdn.com/b/psssql/archive/2010/04/02/how-it-works-soft-numa-i-o-completion-thread-lazy-writer-workers-and-memory-nodes.aspx)

Eagerwriter:当数据库的恢复模式处于bulk_logged/simple时,如果执行bulk operations,Eagerwriter会将数据页(脏页)迅速写回磁盘,对应的PW也会急剧上升。

从以下可以看出,checkpoint并没有发生,lazywriter的数值也为0,但是PW的数值很高,这是因为当时发生了bulk operation的操作。

b848fc848bf52f7cddccd319dd57d589.png

我们也可以通过其它性能计数器的数值来观察SQLSERVER将脏页写回磁盘时的行为

例如

Avg.disk sec/Write

Avg.disk sec/Read

Disk writes/sec

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值