SQL Server性能监控

本文详细介绍了SQLServer性能监控的重要指标,包括SQLServer访问方法、缓冲管理器、高速缓存管理器、闩对象、锁对象等多个方面的关键性能指标及其阈值建议。通过合理设置这些指标,可以帮助优化SQLServer性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
对象指标名称指标定义

指标

范围

指标单位解决方案
SQL Server:Access Methods (SQL Server访问方法)Full Scans/sec (全表扫描/秒)指每秒全表扫描的数量。全表扫描可以是基本表扫描或全索引扫描。由于全表扫描需要耗费大量时间,因此全表扫描的频率过高的话,会影响性能。<2次数/秒如果该指标的值比2高,应该分析设计的查询以确定是否确实需要全表扫描,以及SQL查询是否可以被优化。
SQL Server:Buffer Manager (SQL Server缓冲管理器)Buffer Cache
Hit Ratio (缓冲区高速缓存命中率)
指在缓冲区高速缓存中找到而不需要从磁盘中读取的页的百分比。该比率是缓存命中总次数与缓存查找总次数之比。经过很长时间后,该比率的变化很小。由于从缓存中读取数据比从磁盘中读取数据的开销小得多,一般希望该比率高一些。>90%通常可以通过增加 SQL Server 可用的内存数量来提高该指标的值。增加内存直到这指标的值持续高于90%,表示90% 以上的数据请求可以从数据缓冲区中获得所需数据。
SQL Server:Buffer Manager (SQL Server缓冲管理器)Page Reads/sec (页读取数/秒)指每秒发出的物理数据库页读取数。该指标主要考察数据库从磁盘读取数据的频率。因为物理I/O会耗费大量时间,所以应尽可能地减少物理I/O以提高性能。 个数/秒该指标的值应尽可能的小。可以通过使用更大的数据高速缓存、智能索引、更高效的查询或者改变数据库设计等方法,以降低该指标的值
SQL Server:Buffer Manager (SQL Server缓冲管理器)Page Writes/sec (写入页数/秒)指每秒执行的物理数据库写的页数。该指标主要考察数据库向磁盘写入数据的频率。因为物理I/O 会耗费大量时间,所以应尽可能地减少物理I/O 以提高性能。 个数/秒该指标的值应尽可能的小。可以通过使用更大的数据高速缓存、智能索引、更高效的查询或者改变数据库设计等方法,以降低该指标的值
SQL Server:Buffer Manager (SQL Server缓冲管理器)Lazy Writes/sec (惰性写/秒)指每秒被缓冲区管理器的惰性编写器写入的缓冲区数。惰性编写器是一个系统进程,用于成批刷新脏的老化的缓冲区(包含更改的缓冲区,必须将这些更改写回磁盘,才能将缓冲区重用于其他页),并使它们可用于用户进程<0.1个数/秒 
SQL Server:Plan Cache (SQL Server高速缓存管理器)Cache Hit Ratio (高速缓存命中率)指高速缓存命中次数和查找次数的比率。SQL Server中的Cache包括Log Cache,Buffer Cache以及Procedure Cache,该指标是指所有Cache的命中率,是一个总体的比率。
>80%该指标的值越高越好。如果该指标的值持续低于80%,就需要增加更多的内存。
SQL Server:Latches (SQL Server闩对象)Average Latch Wait Time(ms)
平均闩等待时间
指一个SQL Server线程必须等待一个闩的平均时间。 毫秒如果该指标的值很高,则系统可能正经历严重的资源竞争问题。
SQL Server:Latches (SQL Server闩对象)Latch Waits/sec (闩等待数/秒)指在一个闩上每秒的平均等待数量。 个数/秒如果该指标的值很高,则系统可能正经历严重的资源竞争问题。
SQL Server:Locks (SQL Server锁对象)Number of Deadlocks/sec (死锁数/秒)指每秒导致死锁的锁请求数。锁加在SQL Server资源上(如在一个事务中进行的行读取或修改),以防止多个事务并发使用资源。应尽可能少使用锁以提高事务的并发性,从而改善性能。<0.1个数/秒 
SQL Server:Locks (SQL Server锁对象)Average Wait Time(ms) 平均等待时间指线程等待某种类型的锁的平均等待时间 毫秒 
SQL Server:Locks (SQL Server锁对象)Lock Requests/sec (锁请求数/秒)指每秒钟某种类型的锁的请求数量 个数/秒 
Memory(内存)Available Mbytes (可用内存数)指可用物理内存数>4MB 
Memory(内存)Page Faults/sec (错误页面数、缺页中断数)当处理器在内存中读取某一页出现错误时,就会产生缺页中断,也就是 page Fault。如果这个页位于内存的其他位置,这种错误称为软错误,用Transition Fault/sec 来衡量;如果这个页位于硬盘上,必须从硬盘重新读取,这个错误称为硬错误。硬错误会使系统的运行效率很快将下来。Page Faults/sec这个计数器就表示每秒钟处理的错误页数,包括硬错误和软错误。 次数/秒 
Memory(内存)Page Reads/sec表示为了解决硬错误而从硬盘上读取的页数<5页数/秒如果超过5,则可以判定存在内存方面的问题
Memory(内存)Pages/sec表示为了解决硬错误而从硬盘上读取或写入硬盘的页数<20页数/秒如果Pages/sec的值为20或更大,那么应该进一步研究页交换活动。Pages/sec的值很大不一定表明内存有问题,而可能是运行使用内存映射文件的程序所致。
PhysicalDisk(物理磁盘)%Disk Time (磁盘活动时间比)表示磁盘驱动器为读取或写入请求提供服务所用的时间百分比(如果使用RAID设备,返回的值会出现大于100的情况),如果只有%Disk Time比较大,硬盘有可能是瓶颈<90%如果%Disk Time较高,需检查 Physical Disk\Current Disk Queue Length计数器以查看正在等待磁盘访问的系统请求数量。等待I/O请求的数量应当保持在不大于组成物理磁盘的主轴数的2倍。
PhysicalDisk(物理磁盘)Avg. Disk Bytes/Read在读取操作时从磁盘上传送的字节平均数>20000B 
PhysicalDisk(物理磁盘)Avg. Disk Bytes/Transfer在写入或读取操作时从磁盘上传送或传出字节的平均数>20000B值大于 20 KB 表示该磁盘驱动器通常运行良好;如果应用程序正在访问磁盘,则会产生较低的值
PhysicalDisk(物理磁盘)Avg. Disk Bytes/Write在写入操作时从磁盘上传送的字节平均数>20000B 
PhysicalDisk(物理磁盘)Avg. Disk Queue Length磁盘队列平均长度,表示读取和写入请求的平均数<磁盘数的2倍 可以通过增加磁盘构造磁盘阵列来提高性能
Processor(处理器)% Processor Time
(CPU利用率)
用来查看处理器是否处于饱和状态<80%如果该值持续超过95%,就表示当前系统的瓶颈为CPU,可以考虑增加一个处理器或更换一个性能更好的处理器
System(系统)Processor Queue Length (处理器队列长度)处理器队列长度<CPU数 当该值大于CPU数量的总数+1时,说明产生了处理器阻塞。在处理器的%Processor Time恒定时,一般都伴随着处理器阻塞,但产生阻塞时,Processor%Processor Time计数器的值并不一定很大,此时就需要查找处理器阻塞的原因。
Network Interface (网络接口)Bytes Total/sec发送和接收字节的速率<0.9*带宽B通过该计数器的值判断网络连接速度是否是瓶颈,具体操作方法是用该计数器的值与目前的网络带宽进行比较。
### SQL Server 性能监控方法和工具 #### 1. 使用内置性能监视工具 SQL Server 提供了一系列内置的性能监视工具,用于帮助数据库管理员 (DBA) 和开发人员监控、分析并优化数据库性能。这些工具包括系统视图、动态管理视图 (DMVs)、SQL Server Profiler 和扩展事件 (Extended Events)[^2]。 以下是几种常用的内置工具及其用途: - **系统视图和函数**:通过查询系统视图可以获取关于服务器配置、会话状态以及资源使用情况的信息。例如,`sys.dm_exec_requests` 可以显示当前正在执行的请求详情。 - **动态管理视图 (DMVs)**:DMVs 是一组只读表形式的数据集合,它们存储有关 SQL Server 实例的状态信息。利用 DMVs 能够深入了解服务器内部运作机制,并诊断潜在问题。比如 `sys.dm_os_wait_stats` 帮助识别等待时间较长的操作。 - **SQL Server Profiler**:这是一个图形化用户界面工具,允许捕获和回放 T-SQL 批处理语句及其他活动日志条目。它对于追踪长时间运行或者异常行为非常有用。 - **扩展事件 (Extended Events)**:作为轻量级跟踪框架的一部分,扩展事件提供了更高效的方式来收集详细的性能数据而不会显著增加开销。相比传统的 SQL Trace 或者 Profiler Session 更加灵活可控。 ```sql -- 查询当前活跃连接及对应CPU时间和逻辑读取次数 SELECT session_id, cpu_time, logical_reads FROM sys.dm_exec_sessions; ``` #### 2. 应用程序管理器的应用 除了上述提到的标准组件外,第三方解决方案也可以增强对 SQL Server 的全面洞察力。例如,“Applications Manager”的 SQL Server 性能监视器不仅具备强大的监测能力还支持设置阈值告警等功能,从而让用户轻松掌握整个环境下的表现趋势[^1]。 此产品特色在于以下几个方面: - 它实现了端到端可视化; - 支持复杂的报警策略定制; - 用户友好型设计降低了学习曲线难度; 因此,在众多同类软件当中脱颖而出成为性价比之选之一。 #### 3. 自定义性能计数器 当现有的标准指标不足以满足具体业务场景的需求时,则可以通过创建自定义性能计数器来补充缺失维度。这种方法特别适合那些希望针对特殊工作负载模式进行深入研究的企业客户群体[^4]。 构建过程大致分为几个阶段——注册新类别对象、定义所需属性字段列表最后编写实际采集逻辑代码片段完成部署上线前测试验证流程等等步骤均需谨慎对待以免引入不必要的风险因素影响整体稳定性水平。 ```csharp // 注册新的性能计数器类别的示例 PerformanceCounterCategory.Create( "MyCustomCategory", "Description of my custom category.", PerformanceCounterCategoryType.SingleInstance, new CounterCreationDataCollection { new CounterCreationData("SampleCount64Value", "An example counter that uses the SampleCount64 type.", PerformanceCounterType.SampleCount64), ... }); ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值