SQL的性能监控优化参考

  最近需要查两台业务应用完全相同的数据库服务器,但执行性能却相差甚远的原因。突然想起来从前在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 Statistics/User Connections

SQL Server用户连接数

SQLServer: SQL Statistics/SQL 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来停止内存分页。


Physical Disk:Avg.Disk Queue Length读取和写入请求(磁盘在实例间隔中列队的)平均数。
该值应不超过磁盘数的1.5~2倍。要提高性能,可增加磁盘。
 
Processor: % Privileged Time处理器执行内核命令所用时间百分比
值越小越好

 

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

 

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 Statistics/User Connections  SQL Server用户连接数
由于每个用户连接都消耗一些内存,配置的用户连接数过高会影响吞吐量。这个数字跳到基线的500%以上,可能使系统速度变慢。

 

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

 

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

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

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值