(4.20)sql server性能指标、性能计数器
常规计数器
收集操作系统服务器的服务器性能信息,包括Processor、磁盘、网络、内存
Processor 处理器
1.1 % Processor Time指处理器用来执行非闲置线程时间的百分比。通过此计数器可以确定服务器当前CPU使用百分比。
1.2 % Privileged Time是在特权模式下进程线程执行代码所花时间的百分比。当调用 Windows 系统服务时,此服务经常在特权模式运行,以便获取对系统专有数据的访问。
PhysicalDisk物理磁盘(某个RAID)
2.1 Avg. Disk Queue Length等待请求的队列长度,若此值过大,说明磁盘存在瓶颈,自然磁盘延迟的值也会过大。
2.2 Avg. Disk sec/Read;Avg. Disk sec/Transfer;Avg. Disk sec/Write这三个计数器表示磁盘每次读写需要多少时间,表示磁盘的延迟情况,以秒为单位,若延迟超过25mm表示磁盘性能较差。
LogicalDisk逻辑磁盘(某个卷)
3.1 % Free Space某个磁盘的空闲百分比;Free Megabytes 磁盘剩余大小MB
3.2 Disk Read Bytes/sec;Disk Transfers/sec;Disk Write Bytes/sec这三个计数器表示每秒磁盘的读写情况,表示磁盘的IO性能(iops)
Memory 内存
4.1 Available Mbytes可以内存大小MB,此内存能立刻分配给一个进程或系统使用。它等于分配给待机(缓存的)、空闲和零分页列表内存的总和。
4.2 Cache Bytes 系统使用的内存
4.3 Commit Limit可以申请的内存总大小(虚拟内存和物理内存);Committed Bytes已经使用的内存大小(虚拟内存和物理内存);均是以Byte(字节)为单位。
4.4 Free System Page Table Entries指系统当前未使用的页表项数目。表示内存是否空闲。
4.5 Page Faults/sec 每秒出错页面的数量,也就是未在内存中命中的页面数。因此伴随着Pages/sec计数器是由于出错页面从磁盘读取数据页的速度。此值越大说明内存可能存在一定瓶颈,或者存在大量数据存取。
Network Interface 网络接口
5.1 Current Bandwidth指以位/每秒估计的网络接口的当前带宽。对于那些带宽不变的或无法估计出准确数据的界面,这个值为名义带宽。
5.2 Bytes Received/sec;Bytes Sent/sec;Bytes Total/sec每秒种发送和接收的字节数,表示当前网络的使用情况。
5.3 Output Queue Length输出数据包队列,此值大于2说明传输存在延迟。
5.4 Packets Outbound Discarded 被选为丢弃的数据包数目,丢弃的原因可能是释放缓冲空间。Packets Outbound Errors 由于错误不能传输的数据包数目
5.5 Packets Received Discarded 被选为丢弃的数据包数目,丢弃的原因可能是释放缓冲空间。Packets Received Errors 由于错误不能传输的数据包数目
SQL Server计数器(参考官网:https://docs.microsoft.com/zh-cn/sql/relational-databases/performance-monitor/use-sql-server-objects?view=sql-server-2017)
SQL Server中的Access Methods对象提供监视访问数据库中的逻辑数据的计数器;Buffer Manager计数器监视对磁盘上的数据库也的物理访问。
Access Methods 存取方式
Access Methods监视用于访问数据库中存储的数据的方法有助于确定是否可以通过添加或修改索引、添加或移动分区、添加文件或文件组、对索引进行碎片整理或者重写查询来提高查询性能。 Access Methods 计数器也可用于监视数据库中数据、索引和可用空间的数量,从而指示每个服务器实例的数据卷和碎片。索引的碎片过多会降低性能。
1.1 Page Splits/sec每秒由于索引页溢出而发生的页拆分数。此数据越大表示某表的修改频率较高,且要确认该索引是否适合建立该字段上。
1.2 Workfiles Created/sec每秒创建的工作文件数
1.3 Worktables Created/sec每秒创建的工作表数
Buffer Manager 缓存管理
监视用于存储数据页的内存;读取和写入数据库页时的物理io等,通过此对象可以判断是否存在物理内存瓶颈可以了解服务器的查询性能等等。
2.1 Buffer cache hit ratio命中高速缓冲区页的百分比。若此值过低说明可能内存存在一定瓶颈
2.2 Database pages缓冲池中数据库内容的页数
2.3 Page life expectancy页指示页面在没有引用的情况下,在此节点的缓冲池中停留的时间(以秒计)。此值若降低说明,服务器频繁查询数据库中数据。
2.4 Checkpoint pages/sec Checkpoint的执行频率,若执行的频率过高。则说明服务器过于频繁的修改数据。
2.5 Lazy writes/sec 若懒写入过于频繁,说明没有空闲的缓冲区供使用,内存可能存在一定瓶颈。“惰性编写器”是一个系统进程,用于成批刷新脏的过期的缓冲区(包含更改的缓冲区,必须将这些更改写回磁盘,才能将缓冲区重用于其他页),并使它们可用于用户进程。
Memory Manager 内存管理
监视总体的服务器内存使用情况,以估计用户活动和资源使用,有助于查明性能瓶颈。
3.1 Memory Grants Pending指定等待工作空间内存授权的进程总数。指等待分配内存的进程数量,若此值过高或内存或磁盘存在一定瓶颈。
3.2 Target Server Memory (KB);Total Server Memory (KB)理想上能使用内存量与内存管理器提交的内存量。若此两值存在差异则说明内存异常。
General Statistics 常规统计
4.1 User Connections;Logins/sec;Logouts/sec 用户并发情况
4.2 Processes blocked当前阻塞数量
4.3 Temp Tables For Destruction等待被清除系统线程破坏的临时表/表变量数。无用的临时表和表变量。
SQL Statistics; Wait Statistics请求与等待统计
5.1 Batch Requests/sec;SQL Compilations/sec;SQL Re-Compilations/sec每秒的请求、编译和重编译的次数,这些对于优化供参考。
5.2 Lock waits等待锁的进程数。
5.3 Log write waits等待写入日志缓存的进程数
5.4 Page IO latch waits与页 I/O 闩锁相关的统计信息。用于判断内存或磁盘的瓶颈情况
5.5 Page latch waits与页闩锁(不包括 I/O 闩锁)相关的统计信息。用于判断内存或磁盘的瓶颈情况
Databases针对数据库级别
6.1 Log Flush Wait Time;Log Flushes/sec日志刷新等待和频率,若数据异常则可能存在磁盘瓶颈
6.2 Transactions/sec 事务数
Locks锁
7.1 Lock Requests/sec;Lock Timeouts/sec锁请求频率;锁超时频率
7.2 Number of Deadlocks/sec 死锁情况。
CPU
- Windows -Processor
指标名称 | 指标描述 | 指标范围 | 指标单位 |
CPU利用率 (% Processor Time) | % Processor Time指处理器执行非闲置线程时间的百分比。这个计数器设计成用来作为处理器活动的主要指示器。它通过在每个时间间隔中衡量处理器用于执行闲置处理线程的时间,并且用100%减去该值得出。可将其视为范例间隔用于做有用工作的百分比。 | 根据应用系统情况,在80%±5%范围内波动为宜。过低,则服务器CPU利用率不高;过高,则CPU可能成为系统的处理瓶颈。 | % |
中断率 (Interrupts/sec.) | 每秒钟设备中断处理器的次数。在完成一个任务或需要注意时,装置会发出中断讯号给处理器。可以产生中断的装置包括系统定时器、鼠标、数据通讯联机、网络卡以及其它的外部装置。在中断过程中,一般的执行绪执行将被暂停,而且一个中断可以使处理器切换到另一个具有较高优先等级的执行绪。频率中断是频繁和周期性的,并且中断动作在背景执行。 | 取决于处理器,越低越好;不宜超过1,000; 如果该值显著增加而系统活动没有相应的增加,则表明存在硬件问题,需要检查引起中断的网络适配器、磁盘或其他硬件。 | 次/sec |
系统调用率 System Call/sec. | 指运行在计算机上的所有处理器调用操作系统服务例行程序的综合速率。这些例行程序执行所有在计算机上的如安排和同步活动等基本的程序,并提供对非图形设备、内存管理和名称空间管理的访问。 | 如果Interrupts/sec大于System Calls/sec.,则系统中某一硬件设备产生过多的中断。 | 次/sec |
Processor Queue Length | 处理器队列的线程数量。此计数器只显示就绪线程,而不是正在运行的线程。 | 如果处理器队列中总是有两个以上的线程通常表示处理器堵塞。 | |
进程切换率 Context Switches/sec | 指计算机上的所有处理器全都从一个线程转换到另一个线程的综合速率。当正在运行的线程自动放弃处理器时出现上下文转换,由一个有更高优先就绪的线程占先或在用户模式和特权 (内核) 模式之间转换以使用执行或分系统服务 | 如果此计数器的数值较大,则表明锁定竞争很激烈,或者线程在用户和内核模式之间频繁切换。 |
PS:
-
Processor/% Processor Time
阀值:处理器的阀值一般设为85%。
含义:这个计数器是处理器活动的主要指标。高数值并不一定是坏事,但是如果其他处理器相关的计数器(比如% Privileged Time 或者Processor Queue Length)线性增加的话,高CPU使用率就值得调查了。 -
Processor/% Privileged Time
阀值:如果数值持续大于75%就表示存在瓶颈。
含义:这个计数器表示一个线程在特权模式下所使用的时间比例。当你的程序调用操作系统的方法(比如文件操作,网络I/O或者分配内存),这些操作系统的方法是在特权模式下运行的。 -
Processor/% Interrupt Time
阀值:取决于处理器
含义:这个计数器表示处理器接收处理硬件中断所使用的时间比例。这个值间接指出产生中断的硬件设备活动,比如网络变化。这个计数器显著增加的话表示硬件可能存在问题。 -
System/Processor Queue Length
阀值:平均值持续大于2那么表示CPU存在瓶颈
含义:如果就绪的任务超过处理能力线程就会被放进队列。处理器队列是就绪但是未能被处理器执行的线程的集合,这是因为另外一个线程正在执行状态。持续或者反复发生2个以上的队列则明确的表示存在处理器瓶颈。你也能通过减少并发取得更大的吞吐量。
你可以结合Processor/% Processor Time来决定增加CPU的话你的程序是否能够受益。即使在多处理器的电脑上,对于CPU时间也是单队列。因此,在多处理器电脑上,Processor Queue Length (PQL)的值除以用来处理负载的CPU个数。
如果CPU非常忙(90%以上的使用率),PQL的平均值也持续大于2/CPU,这是应该存在CPU瓶颈而且能够从更多的CPU中受益。或者,你可以减少线程的数量以及增加应用程序层的队列。这会引起少量的Context Switching,但是少许的Context Switching对于减少CPU负载是有好处的。PQL大于2但是CPU使用率却不高的的常见原因是对CPU时间的请求随机到达而且线程却从处理器申请到不对称的CPU时间。这意味着处理器并不是瓶颈,而你的线程逻辑是需要改进的。 - System/Context Switches/sec
阀值:按照通常的规律,context switching速率小于5000/秒/CPU是不需要担心的。如果Context Switching速率达到15000/秒/CPU的话就是一个制约因素了。
含义:当一个高优先级的线程取代一个正在运行的低优先级线程,或者高优先级线程阻塞的时候就会发生Context Switching。大量的Context Switching可以发生在许多线程拥有相同的优先级的情况下,这通常表示有太多的线程竞争CPU,如果你没有看到太高的处理器使用率而且发现Context Switch非常低,那么表示线程被阻塞。
内存
- Windows -Memory
指标名称 | 指标描述 | 指标范围 | 指标单位 |
Pages/sec Pages Input/sec Pages Output/sec Page Fault/sec | Page Faults/sec 是处理器每秒钟处理的错误页(包括软错误和硬错误)。Pages Input/sec 是为了解决硬错误页,从硬盘上读取的页数, 而Page Reads/sec是为了解决硬错误,从硬盘读取的次数。Pages/sec是Pages Input/sec 和Pages Output/sec 的总和。 该系列指标是可以显示导致系统范围延缓类型错误的主要指示器。 当处理器向内存指定的位置请求一页(可能是数据或代码)出现错误时,这就构成一个Page Fault。如果该页在内存的其他位置,该错误被称为软错误( 用Transition Fault/sec衡量); 如果该页必须从硬盘上重新读取时, 被称为硬错误。许多处理器可以在有大软错误的情况下继续操作。但是, 硬错误可以导致明显的拖延。 | 如果Page Reads/Sec持续保持为5,表示可能内存不足。Page/sec推荐0-20。如果服务器没有足够的内存处理其工作负荷,此数值将一直很高。如果大于80,表示有问题(太多的读写数据操作要访问磁盘,可考虑增加内存或优化读写数据的算法)。 该系列计数器的值比较低, 说明响应请求比较快, 否则可能是服务器系统内存短缺引起(也可能是缓存太大, 导致系统内存太少)。 | 次/sec |
Available Bytes | 显示出当前空闲的物理内存总量,它等于分配给待机(缓存的)、空闲和零分页列表内存的总和。 空闲内存可以马上使用; 清零内存是由零值填满的内存页,用来防止后续进程获得旧进程使用的数据; 待机内存是从进程工作集(其物理内存)中删除然后进入磁盘的内存,但是该内存仍然可以收回。该指标仅显示最后一次观察到的值,不是平均值。 | 当这个数值变小时,Windows开始频繁地调用磁盘页面文件。如果这个数值很小,例如小于5 MB,系统会将大部分时间消耗在操作页面文件上。 一般要保留10%的可用内存。最低不能<4M,此值过小可能是内存不足或内存泄漏。 | |
Committed Bytes | 是指以字节表示的确认虚拟内存,是磁盘页面文件上保留空间的物理内存。 | 不超过物理内存的 75% | |
硬盘参数
- Windows -Disk
指标名称 | 指标描述 | 指标范围 | 指标单位 |
% Disk Time | 指所选磁盘驱动器忙于为读或写入请求提供服务所用的时间的百分比。 | 正常值<10,此值过大表示耗费太多时间来访问磁盘,可考虑增加内存、更换更快的硬盘、优化读写数据的算法。若数值持续超过80 (此时处理器及网络连接并没有饱和),则可能是内存泄漏。 | |
Current Disk Queue Length | 是在收集性能数据时磁盘上当前的请求数量。它还包括在收集时处于服务的请求。这是瞬间的快照,不是时间间隔的平均值。多轴磁盘设备能有一次处于运行状态的多重请求,但是其他同期请求正在等待服务。此计数器会反映暂时的高或低的队列长度,但是如果磁盘驱动器被迫持续运行,它有可能一直处于高的状态。 | 请求的延迟与此队列的长度减去磁盘的轴数成正比。为了提高性能,此差应该平均小于二。 | |
Avg.Disk Queue Length Avg. Disk Read Queue Length Avg. Disk Write Queue Length | 指读取和写入请求(为所选磁盘在实例间隔中列队的)的平均数。 | Avg.Disk Queue Length正常值<0.5,此值过大表示磁盘IO太慢,要更换更快的硬盘。 | |
windows性能监视器