SqlServer 性能计数器

来源:互联网 发布:单片机超声波测距仪 编辑:程序博客网 时间:2024/04/29 07:40

监控范围

计数器

说明

CPU

\Processor(_Total)\% Processor Time

Processor Information\% Processor Time一样。总体看CPU是否很忙。

若忙,接着再看sqlservr进程的CPU占用情况,确定是否是SqlServer消耗CPU。

\Processor(_Total)\% Interrupt Time

处理器在实例间隔期间接受和服务硬件中断的时间 (CPU花在处理中断上的时间的百分比)。

如果这个值超过50%的处理器时间, 你就很可能遇到了一个硬件问题。

\System\Processor Queue Length

就绪线程在等待分配CPU资源所排队列的长度。多处理器的计算机只有一个处理器队列。

如果持续一段时间大于(处理器个数+1)个数的值,说明CPU堵塞

\System\Threads

当前计算机线程数。

\System\Context Switches/sec

线程在处理器中的切换速率,可了解到系统的繁忙程度。

对比日常记录,较多的话,考虑更快是CPU。

如果 Processor Queue Length 为0,可以不必担心。

\Process(sqlservr)\% Privileged Time

进程调用 Windows 系统服务时,此服务经常在特权(内核)模式运行,

以便获取对系统专有数据或硬件的访问。如果值很高,可能系统服务遇到问题。

\Process(sqlservr)\% Processor Time

sqlservr进程线程使用处理器执行指令所花的时间百分比。

Cpu 高时可确定是否是 sqlserver 进程引起的还是系统其它进程引起的。

\Process(sqlservr)\Thread Count

实例工作线程数。参考 sys.dm_os_threads

\Process(sqlservr)\Virtual Bytes

进程可使用的虚拟空间(包括物理内存和页面文件),似乎没多大意义。

\Process(sqlservr)\Working Set

实例工作集(专用Private Bytes + 共享)

\Process(sqlservr)\Private Bytes

实例已提交的专用内存,实际已经分配的,不共享,但可能使用了页面文件。

MEMORY

\Memory\Available Mbytes

服务器可用内存。

\Memory\Pages/sec

为解决硬页错误从磁盘读取或写入磁盘的速度(每秒钟内存和磁盘之间交换的页面数)。

该数据很高时,再与Buffer Hit Cache Ratio判断是数据库还是其它程序引起的。

\Memory\Transition Faults/sec

为解决软页错误从内存其它地方读取的速度。在内存操作,影响不大。

\SQLServer:Buffer Manager\Database pages

缓冲池(buffer pool)中数据库使用的页面数

\SQLServer:Buffer Manager\Stolen pages

缓冲池(buffer pool)中用于其他服务(如过程缓存)的页数

\SQLServer:Buffer Manager\Free pages

缓冲池(buffer pool)中未使用的页面数。

可确定内存是否充足以调优命中率 Buffer Hit Cache Ratio

\SQLServer:Buffer Manager\Target pages

该实例数据库可使用缓冲池(buffer pool)的最大页面数。
sp_configure 'max server memory (MB)'

\SQLServer:Buffer Manager\Total pages

该实例数据库已使用缓冲池的页面数,最大为 Target pages 。
Total pages = Database pages + Free pages + Stolen pages

\SQLServer:Memory Manager\Memory Grants Pending

等待内存授予的进程数。应接近为0,内存充足不需要等待分配内存空间。

\SQLServer:Memory Manager\Lock Memory (KB)

维护锁开销的动态内存。内存不足影响锁的申请,锁太多也消耗过多内存。

\SQLServer:Memory Manager\Connection Memory (KB)

维护连接占用的动态内存。内存不足影响连接,连接过多也消耗过多内存。

\SQLServer:Buffer Manager\Buffer cache hit ratio

缓存命中率,在缓冲区高速缓存中找到而不需要从磁盘中读取(物理I/O)的页的百分比。

可判断内存是否充足,最好保证95%以上。
(实际也不太准,预读也当做命中了,预读是读磁盘的)

\SQLServer:Buffer Manager\Checkpoint pages/sec

每秒钟将内存脏数据刷新到磁盘的次数。

与内存无关,DML频繁时改值会变大,主要影响IO写入。

\SQLServer:Buffer Manager\Lazy writes/sec

每秒钟由惰性写入器将内存脏数据写入到磁盘的此时。

与内存相关,内存不足时会发生,同时将脏数据页释放使内存增加。

\SQLServer:Buffer Manager\Page life expectancy

页的生命期,数据页在内存中的驻留时间。内存足够时,页面驻留更久而不被释放。

\Paging File(\??\C:\pagefile.sys)\% Usage

页面文件(pagefile.sys)的使用比例,可查看文件确定用了多大的虚拟内存。

虚拟内存=物理内存+页面文件,物理内存不足时会扩展使用到页面文件。

\Paging File(\??\C:\pagefile.sys)\% Usage Peak

页面文件(pagefile.sys)的峰值比例,即可确定使用的最大值。

IO
(C盘为例)

\LogicalDisk(C:)\Free Megabytes

\LogicalDisk(C:)\% Free Space

磁盘可用空间

磁盘剩余空间百分比

\LogicalDisk(C:)\Avg. Disk Read Queue Length

逻辑磁盘平均读队列长度。可确定哪个逻辑盘有读瓶颈。应为0。

\LogicalDisk(C:)\Avg. Disk Write Queue Length

逻辑磁盘平均写队列长度。可确定哪个逻辑盘有写瓶颈。应为0。

\LogicalDisk(C:)\Current Disk Queue Length

逻辑磁盘当前状态的队列长度。状态值,应小于2。

\LogicalDisk(C:)\Disk Read Bytes/sec

逻辑磁盘每秒读取的字节数。衡量I/O吞吐量。

\LogicalDisk(C:)\Disk Write Bytes/sec

逻辑磁盘每秒写入的字节数。衡量I/O吞吐量。

\LogicalDisk(C:)\Disk Reads/sec

逻辑磁盘每秒读取的次数。衡量I/O吞吐量。(Read Bytes/sec)/(Reads/sec)

\LogicalDisk(C:)\Disk Writes/sec

逻辑磁盘每秒写入的次数。衡量I/O吞吐量。

\PhysicalDisk(0 C:)\Avg. Disk sec/Read

物理磁盘平均读取时间。应在10ms以内。

\PhysicalDisk(0 C:)\Avg. Disk sec/Write

物理磁盘平均写入时间。应在10ms以内。

NETWORK

\Network Interface(网卡名称)\Bytes Received/sec

网卡每秒发送字节数。可确定带宽用量及购买;可查看流量是否异常。

\Network Interface(网卡名称)\Bytes Sent/sec

网卡每秒接收字节数。可确定带宽用量及购买;可查看流量是否异常。

\Network Interface(网卡名称)\Output Queue Length

网卡输出数据列队(数据包)的长度。应为0。确定网络是不是有问题。

DATABASE

\SQLServer:SQL Statistics\Batch Requests/sec

每秒批处理请求数

\SQLServer:SQL Statistics\SQL Compilations/sec

每秒SQL编译次数。

相当于首次创建或执行语句导致编译,编译和重编译都消耗 CPU 和内存资源。

编译消耗CPU,编译完成后计划驻留在内存。

\SQLServer:SQL Statistics\SQL Re-Compilations/sec

每秒SQL重编译次数。有不能重用的执行计划,加参数使重用,或强制参数化。

\SQLServer:General Statistics\Processes blocked

当前堵塞的进程数。Sys.sysprocess 可查看,可使用策略触发保存堵塞记录。

\SQLServer:General Statistics\User Connections

当前连接数。select COUNT(*) from sys.sysprocesses where spid>50

\SQLServer:General Statistics\Active Temp Tables

当前正在使用的临时表或者表变量。

\SQLServer:Access Methods\Full Scans/sec

每秒表或索引的扫描次数。可以搜索缓存中扫描语句。(搜索语句较特殊)

\SQLServer:Access Methods\Workfiles Created/sec

每秒 Workfiles 创建数量,表哈希连接或者哈希聚合需要用到。

\SQLServer:Access Methods\Worktables Created/sec

每秒 Worktables 创建数量,查询、LOB和XML变量、游标需要用到。

\SQLServer:Access Methods\Page Splits/sec

每秒由于索引页溢出而发生的页拆分数。发送较多可使用索引填充因子。

\SQLServer:Locks(_Total)\Number of Deadlocks/sec

每秒死锁数量。可打开跟踪标志 1222 和 1204 记录死锁信息。

\SQLServer:Locks(_Total)\Lock Timeouts/sec

每秒锁请求超时次数。估计对资源的并发请求较多,可以开启慢语句跟踪及优化。

\SQLServer:Databases(_Total)\Active Transactions

活动是事务数。(如 bengin tran 中执行 DML 操作,select 排除)

\SQLServer:Databases(_Total)\Log File(s) Size (KB)

监控所有数据库事物日志的大小。

最好是分别监控每个数据库的事务日志大小,而不是全部的。

可以跟踪数据库是否有大的事务操作。

\SQLServer:Databases(_Total)\Log Flushes/sec

每秒日志缓存记录刷新到磁盘的次数。Commit、rollback 或 Checkpoint 等引起。

\SQLServer:Databases(_Total)\Transactions/sec

数据库每秒事务数



之前的总结:SqlServer 主要监控的性能计数器



0 0
原创粉丝点击