加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SqlServer 性能计数器

发布时间:2020-12-12 13:25:32 所属栏目:MsSql教程 来源:网络整理
导读:监控范围 计数器 说明 CPU Processor(_Total)% Processor Time 与 Processor Information% Processor?Time 一样。总体看CPU是否很忙。 若忙,接着再看sqlservr进程的CPU占用情况,确定是否是SqlServer消耗CPU。 Processor(_Total)% Interrupt Time 处理

监控范围

计数器

说明

CPU

Processor(_Total)% Processor Time

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

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

Processor(_Total)% Interrupt Time

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

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

SystemProcessor Queue Length

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

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

SystemThreads

当前计算机线程数。

SystemContext Switches/sec

线程在处理器中的切换速率。可了解到系统的繁忙程度,较难确定什么。

如果 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

MemoryAvailable Mbytes

服务器可用内存。

MemoryPages/sec

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

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

MemoryTransition Faults/sec

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

SQLServer:Buffer ManagerDatabase pages

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

SQLServer:Buffer ManagerStolen pages

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

SQLServer:Buffer ManagerFree pages

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

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

SQLServer:Buffer ManagerTarget pages

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

SQLServer:Buffer ManagerTotal pages

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

SQLServer:Memory ManagerMemory Grants Pending

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

SQLServer:Memory ManagerLock Memory (KB)

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

SQLServer:Memory ManagerConnection Memory (KB)

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

SQLServer:Buffer ManagerBuffer cache hit ratio

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

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

SQLServer:Buffer ManagerCheckpoint pages/sec

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

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

SQLServer:Buffer ManagerLazy writes/sec

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

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

SQLServer:Buffer ManagerPage 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:)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 StatisticsBatch Requests/sec

每秒批处理请求数

SQLServer:SQL StatisticsSQL Compilations/sec

每秒SQL编译次数。

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

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

SQLServer:SQL StatisticsSQL Re-Compilations/sec

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

SQLServer:General StatisticsProcesses blocked

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

SQLServer:General StatisticsUser Connections

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

SQLServer:General StatisticsActive Temp Tables

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

SQLServer:Access MethodsFull Scans/sec

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

SQLServer:Access MethodsWorkfiles Created/sec

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

SQLServer:Access MethodsWorktables Created/sec

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

SQLServer:Access MethodsPage 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 主要监控的性能计数器

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读