您的位置:首页 > 数据库

SqlServer 性能计数器

2016-09-07 20:35 190 查看
监控范围
计数器
说明
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 主要监控的性能计数器
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: