zoukankan      html  css  js  c++  java
  • 将脏页写回磁盘

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

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

    1. 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迅速上升

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

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

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

    例如

    Avg.disk sec/Write

    Avg.disk sec/Read

    Disk writes/sec

  • 相关阅读:
    JS正则表达式
    JS验证电话号是否合法
    特性Attribute 的使用
    三层架构(面向对象思想)
    oracle 游标的使用
    oracle中的net manager 无法配置
    .net学习网站汇总
    每天进步一点点之后缀表达式求值
    每天进步一点点之中缀表达式转后缀表达式
    下载Android代码
  • 原文地址:https://www.cnblogs.com/qanholas/p/2312938.html
Copyright © 2011-2022 走看看