行至水穷处,坐看云起时

  • rss
  • 博客首页
  • 音乐故事
  • 摄影相册
  • 站点导航
  • 与我联络

SQL的性能监控优化参考

2009-06-07 | 16:28
最近需要查两台业务应用完全相同的数据库服务器,但执行性能却相差甚远的原因。突然想起来从前在SNDA的时候PT也发生过的性能问题。现在回头再想想,当时的分析还很不足。
数据库优化的目标无非是避免磁盘I/O瓶颈、减少CPU利用率和减少资源竞争。当一台服务器的执行性能出现问题,准确的找到问题来源就非常关键。合理利用操作系统自带的性能计数器可以帮助你定位故障的原因。
可惜我没有Patton的开发能力,所以只能定时取数据做日后分析,否则用他开发的monitor监控,还可以实现即时报警,那就更好了。
服务器上新建性能监控的日志,取所需计数器,设定计划任务定时启动或建立SQL JOB定时执行命令:logman start 计数器名

添加计数器

计数器 描述
Memory: Available Bytes 内存可用字节数
Memory: Page Faults / sec 处理器硬/软页错误处理速率
Process: Working Set 进程占用内存量
Memory Pages/sec 每秒磁盘读写页数
Physical Disk: Avg.Disk Queue Length 读取和写入请求(磁盘在实例间隔中列队的)平均数。
Physical Disk: Reads/sec 每秒磁盘读取操作速率
Physical Disk: Writes/sec 每秒磁盘写入操作速率
Processor: % Privileged Time 处理器执行内核命令所用时间百分比
Process: % Processor Time 处理器时间百分比(活跃程度)
Processor: %User Time 处理器执行用户进程百分比
SQL Server: Access Methods: Full Scans/sec 每秒完全扫描次数
SQL Server: Access Methods: Page splits/sec 每秒页分割数量
SQL Server: Buffer Manager: Buffer Cache Hit Ratio 缓冲区缓存命中率
SQL Server: Buffer Manager: Lazy Writes/sec 惰性写进程每秒写缓冲区数量
SQLServer: Cache Manager: Cache Hit Ratio SQL快取中找到请求资料分页的时间比率
SQL Server: Latches: Latch Waits/sec 每秒闩锁等待数量
SQL Server: Locks: Average Wait Time 每个导致等待的锁请求的平均等待时间(毫秒)
SQLServer: Locks: Lock Requests/sec 每秒请求的锁个数
SQLServer: Locks: Lock Wait Time (ms) SQL每秒锁等待
SQL Server: Memory Manager: Total Server Memory 服务器分配SQL可用内存总量
SQLServer: General StatisticsUser Connections SQL Server用户连接数
SQLServer: SQL StatisticsSQL Re-Compilations 每秒SQL重编译数


Memory: Page Faults / sec处理器硬/软页错误处理速率
如果该值偶尔走高,表明当时有线程竞争内存。如果持续很高,则内存可能是瓶颈。

Process : Working Set进程占用内存量
该值保持在min server memory (0)和 max server memory (2147483647)服务器选项设置的内存量之间,则不需要调整工作集大小。

Memory Pages/sec每秒磁盘读写页数
这会导致硬页故障,从而导致SQL Server依赖页文件而不是依赖内存。如果这个计数器的平均值为20,你可能需要添加额外的RAM来停止内存分页。

Process:%Processor Time处理器时间百分比(活跃程度)
如果该参数值持续超过95%,表明瓶颈是CPU。可以考虑增加一个处理器或换一个更快的处理器。

Processor: %User Time处理器执行用户进程百分比
Processor: %User Time计数器值高于Processor: % Privileged Time 计数器值,表明该CPU 使用率可能来自执行用户进程(例如 SQL Server)。优化应用程序可以降低 CPU 的使用率。

SQL Server : Access Methods: Full Scans/sec每秒完全扫描次数
合理范围:<5

SQL Server : Buffer Manager:Buffer Cache Hit Ratio缓冲区缓存命中率
比率最好为90% 或更高。表示90% 以上的数据请求可以从数据缓冲区中获得所需数据。

SQL Server : Buffer Manager: Lazy Writes/sec惰性写进程每秒写缓冲区数量
合理范围:0

SQLServer : Cache Manager: Cache Hit RatioSQL快取中找到请求资料分页的时间比率
该值越高越好。如果持续低于80%,应考虑增加内存。 注意该参数值是从SQL Server启动后,就一直累加记数,所以运行经过一段时间后,该值将不能反映系统当前值。

SQL Server : Latches: Latch Waits/sec每秒闩锁等待数量
合理范围:越小越好,值过大表明服务器可能存在对资源的竞争问题。

SQL Server : Memory Manager: Total Server Memory服务器分配SQL可用内存总量
如果内存等于机器上的物理内存总量,则可能存在内存争用,因为没有给windows留下任何RAM以执行通常的操作

SQLServer:General StatisticsUser Connections  SQL Server用户连接数
由于每个用户连接都消耗一些内存,配置的用户连接数过高会影响吞吐量。这个数字跳到基线的500%以上,可能使系统速度变慢。

SQLServer:SQL StatisticsSQL Re-Compilations每秒SQL重编译数
如果这个数字过高,存储过程执行计划可能无法适当地缓存。


SQL Server : Access Methods: Page splits/sec每秒页分割数量
合理范围:越小越好,可降低填满因子的设定值或重建索引还减少每秒的页分割数量。


Physical Disk:Avg.Disk Queue Length读取和写入请求(磁盘在实例间隔中列队的)平均数。
该值应不超过磁盘数的1.5~2倍。要提高性能,可增加磁盘。

Processor: % Privileged Time处理器执行内核命令所用时间百分比
值越小越好

影响性能的因素很多,而应用又各不相同,找出一个通用的优化方案是很困难的,只能是在系统开发和维护的过程中针对运行的具体情况,不断加以调整。

以上只是我平时去取的计数器,还有非常多的计数器可以帮助管理员更好的分析性能,有需要可以再Google。

本文地址:http://read.newbooks.com.cn/info/180194.html

标签:2005, microsoft, server, SQL

相关日志

  • SQL Server 2005 配置中可能遇到的一些问题 (0)
  • Security Guidance for IIS (0)
Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪ViVi 365Key网摘 天极网摘 和讯网摘 博拉网 POCO网摘 添加到饭否 QQ书签 Digbuzz我挖网
分类
艺海无涯
Tags
2005, microsoft, server, SQL
订阅RSS留言
订阅RSS留言
Trackback
Trackback

« 使用siege进行WEB压力测试 ESET SysInspector 是个很好很漂亮的诊断工具啊!!! »

留言

你可以使用这些标记 : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

点击取消回复
rss 订阅RSS留言 valid xhtml 1.1 design by jide powered by Wordpress get firefox