SQL Server性能计数器
计数器 | 描述 |
---|---|
Buffer manager/buffer cache hit ratio | 指可在缓冲池中找到而不需要从磁盘中读取(物理I/O)的页面的百分比。如果该值较低则可能存在内存不足或不正确的索引 |
General statistics object/user connections | 指系统中活动的SQL连接数。该计数器的信息可以用于确定系统得最大并发用户数 |
Locks/lock requests/sec | 指每秒请求的锁个数。通过优化查询来减少读取次数,可以减少该计数器的值。 |
Locks/lock timeouts/sec | 指每秒由于等待对锁的授权的锁请求数,理想情况下,该计数器的值为0 |
Locks/lock waits/sec | 指每秒无法立刻得到授权而超时的锁请求数,理想情况下,该计数器的值应该尽可能为0 |
Locks/number of deadlocks/sec | 指每秒导致死锁的锁请求数。死锁对于应用程序的可伸缩性非常有害,并且会导致恶劣的用户体验。该计数器必须为0 |
Memory manager/memory grants pending | 指每秒等待工作空间内存授权的进程数。该计数器应该尽可能接近0,否则预示可能存在着内存瓶颈 |
SQL statistics/batch requests/sec | 指每秒向服务器提交批的请求次数。该计数器被用来确定系统的负载大小 |
SQL statistics/ SQL compilations/sec | 指每秒编译数。理想状态下该计数器的值应该低,如果batch requests/sec计数器的值非常接近该计数器,那么可能存在大量的特殊SQL调用 |
SQL statistics/ re- compilations/sec | 指每秒的重新编译数。该计数器的值越低越好。存储过程在理想情况下应该只编译一次,然后被他们的执行计划重复利用。如果该计数器的值较高,或许需要换个方式编写存储过程,从而减少重编译的次数 |
当您怀疑计算机硬件是影响SQL Server运行性能的主要原因时,可以通过SQL Server Performance Monitor监视相应硬件的负载,以证实您的猜测并找出系统瓶颈。下文将介绍一些常用的分析对象及其参数。
Processor:%User Time
表示耗费CPU的数据库操作,如排序,执行aggregate functions等。如果该值很高,可考虑增加索引,尽量使用简单的表联接,水平分割大表格等方法来降低该值。
Memory: Page Faults / sec
如果该值偶尔走高,表明当时有线程竞争内存。如果持续很高,则内存可能是瓶颈。
SQLServer:Cache Hit Ratio
该值越高越好。如果持续低于80%,应考虑增加内存。 注意该参数值是从SQL Server启动后,就一直累加记数,所以运行经过一段时间后,该值将不能反映系统当前值。
Process: Working Set
SQL Server的该参数应该非常接近分配给SQL Server的内存值。在SQL Server设定中,如果将"set working set size"置为0, 则Windows NT会决定SQL Server的工作集的大小。如果将"set working set size"置为1,则强制工作集大小为SQLServer的分配内存大小。一般情况下,最好不要改变"set working set size"的缺省值。
Process:%Processor Time
如果该参数值持续超过95%,表明瓶颈是CPU。可以考虑增加一个处理器或换一个更快的处理器。
Processor:%Privileged Time
如果该参数值和"Physical Disk"参数值一直很高,表明I/O有问题。可考虑更换更快的硬盘系统。另外设置Tempdb in RAM,减低"max async IO","max lazy writer IO"等措施都会降低该值。
Physical Disk:Avg.Disk Queue Length
该值应不超过磁盘数的1.5~2倍。要提高性能,可增加磁盘。
注意:一个Raid Disk实际有多个磁盘。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
2005-09-22 页面验证码程序(C#)
2005-09-22 清除ASP.NET页面缓存