sql Server :Buffer Manager
又很多有用的计数器都是这 buffer manager 对象下面,可以帮助发现buffer pool滚筒的问题。
buffer cache hit ratio
buffer cache hit ratio一般情况下在oltp中要高于95%,在olap中要高于90%。可惜的是没有关于这个性能指标相关的解释,和这个值是如何影响预读机制的。如果这个指标的值有巨大的下降那么就说明有问题。这个不能说明内存压力和sql server 健康指数。
page life expectancy
page life expectancy是页生命周期,也就是一个数据页在内存中的时间。在以前sql server 2000 4g的内存已经很大了,sql server buffer pool的大小是1.6g,如果sql server 从磁盘上读取1.6g的数据也只要5分钟,但是今天64g的内存是主流,如果从磁盘一下子读取50g的内存,会严重的冲击io。当存在大量的查询扫描表,读入新的数据页,导致生命周期值下降也不是不正常的。这个值必须长期的监视来分析问题。
free pages是内存中空页的数量,不要接近于0,个值说明查询能否在其他查询不是放内存的情况下,快速的分配内存的主要依据。如果free pages 很少,页生命周期很短,并且伴随着空页争用(free List stalls/sec)的情况那么很有可能导致内存压力。
Free List stalls/sec
Free List stalls/sec每秒空页等待的数量,如果一段时间内都在0以上那么说明可能存在内存压力。
lazy write/sec
lazy write/sec 就是每秒写入磁盘的次数。如果发生量很大并且生命周期很短,free page 很少,但是 free List stall/sec 量很大,那么就是发生内存压力了。
sql Server:memory Manager sql Server:memory Manager对象内对内存的消费和内存管理的问题提供了很重要参考 total server memory 和 target server memory 这2个计数器代表了当前sql server 使用的总共内存和sql server 想要用的内存。如果 target server memory超过了total server memory,也是内存压力的重要标志。sql server 会减少内存的需求来接近服务的可用内存,或者通过最大服务器内存配置,所以当内存出现压力问题的时候不应该第一时间去查看这2个计数器 memory grants outstanding 该值是现实多少进程已经成功的获取了内存的授权。在一段时间内,业务高峰期,如果该值过低,那么标志可能存在内存压力,特别是 memory grants pending 也比较高的情况下。 memory grants pending 该值是有过少进程正在等待内存的授权。如果为非0,那么说明需要调整或者优化负载或者增加内存。 内存相关的DMV 和内存相关的等待和非buffer pool 内存分配的信息,从dmv中获取。 sys.dm_exec_query_memory_grants 可以查看正在等待授权的查询,特别是大内存的授权 sys.dm_os_memory_cache_counter multi_pages_kb 显示了多页分配的内存分配 sys.dm_os_sys_memory 合计了系统当前内存,缓冲,cache,多页分配分配的内存。 sys.dm_os_memory_clerks 显示相关管理内存的书记进程,如 buffer pool 大内存的使用并且结合 MEMORYCLERK_sqlQERESERVATIONS 可以发现buffer pool 内存不足
总结以上是内存溢出为你收集整理的sqlserver2005 性能分析(2)全部内容,希望文章能够帮你解决sqlserver2005 性能分析(2)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)