阿里云RDS(SQL SERVER用户控制台监控信息详解)

一. 工具

Microsoft SQL Server 2008R2 提供了一些工具来监控数据库。方法之一是动态管理视图。动态管理视图 (DMV)返回的服务器状态信息可用于监控服务器实例的运行状况、诊断问题和优化性能。

常规服务器动态管理对象包括:

dm_db_*:数据库和数据库对象

dm_exec_*:执行用户代码和关联的连接

dm_os_*:内存、锁定和时间安排

dm_tran_*:事务和隔离

dm_io_*:网络和磁盘的输入/输出

二. Metrics

用户控制台所看到的metrics

磁盘空间

命令: 总空间 = 数据空间 + 日志空间 + 其它文件空间(temp)

解释: 页面显示了磁盘空间的使用量单位是GB

IOPS

命令: iopsflt.exe(自主开发)

解释: IOPS (Input/Output Operations Per Second),即每秒进行读写(I/O)操作的次数

CPU使用率

命令:利用进程pid获得此进程的cpu使用率,再用获得的cpu使用率比上用户申请的得到一个百分比

解释: IOPS (Input/Output Operations Per Second),即每秒进行读写(I/O)操作的次数

连接数

命令

    select count(*) from sys.dm_exec_sessions   
    where is_user_process=1  
    and login_name not in ('***')  
    and login_name not like '***'  
    and status not in ( 'Preconnect','Dormant')  

解释

sys.dm_exec_sessions 是服务器范围的视图,显示了有关所有活动用户连接和内部任务的信息。

login_name 当前执行的会话所使用的 SQL Server 登录名。

is_user_process 用于判断是否是系统连接。

status 会话的状态。 可能的值:

Running - 当前正在运行一个或多个请求

Sleeping - 当前没有运行任何请求

Dormant – 会话因连接池而被重置,并且现在处于登录前状态。

Preconnect - 会话在资源调控器分类器中。

分类资源调控器支持对传入会话的分类。分类基于函数中包含的一组用户编写的条件。

函数逻辑的结果使资源调控器可以将会话归入现有工作负荷组类。

会话传入链接——分类(分类器函数)——路由到工作负荷组——工作负荷组使用相关联的资源池——资源池提供同时限制应用程序资源

网络流量

命令

SELECT round(SUM(net_packet_size * 1.0 * num_reads / 1024), 0) AS read_kb, round(SUM(net_packet_size * 1.0 * num_writes / 1024), 0) AS write_kb   
FROM sys.dm_exec_connections   
    WHERE session_id IN (  
    SELECT session_id  
    FROM sys.dm_exec_sessions  
    WHERE is_user_process = 1  
)  

理解

dm_exec_connections 返回与 SQL Server 实例建立的连接有关的信息以及每个连接的详细信息。

net_packet_size 用于信息和数据的网络包的大小。可为 Null 值。

num_reads 此连接中已发生的读包次数。可为 Null 值。

num_writes 此连接中已发生的写数据包次数。可为 Null 值。

session_id 标识与此连接关联的会话。可为 Null 值。

is_user_process 用于判断是否是系统连接。

TPS

命令

    SELECT cntr_value   
    FROM sys.dm_os_performance_counters   
    WHERE object_name LIKEMSSQL$MS3001:database%%’   
    AND instance_name = ‘_Total’   
    AND counter_name LIKE ‘Transactions/sec%%

理解

Database 对象提供了计数器,来监视大容量复制操作、备份和还原吞吐量以及事务日志活动。

_Total 有的计数器的instance_name中有值为_Total的实例,它是对该计数器所有实例的聚合值(SUM)。

Transactions/sec 每秒为数据库启动的事务数

QPS

命令

    SELECT cntr_value   
    FROM sys.dm_os_performance_counters   
    WHERE object_name = ‘MSSQL$MS3001:SQL Statistics’   
    AND counter_name = ‘Batch Requests/sec’  

理解

SQL Statistics 对象提供计数器来监视编译和发送到 SQL Server实例的请求类型。通过监视查询编译和重新编译的次数以及 SQL Server 实例收到的批数,可了解 SQL Server 处理用户查询的速度,以及查询 优化器处理查询的效率。

Batch Requests/sec 每秒收到的 Transact-SQL 命令批数。

缓存命中率

命令

SELECT a.cntr_value * 1.0 / b.cntr_value * 100.0 AS BufferCacheHitRatio   
    FROM sys.dm_os_performance_counters a   
    JOIN (SELECT cntr_value, OBJECT_NAME   
    FROM sys.dm_os_performance_counters   
    WHERE counter_name = 'Buffer cache hit ratio base'   
    AND OBJECT_NAME = 'MSSQL$MS3001:Buffer Manager'  
    ) b ON a.OBJECT_NAME = b.OBJECT_NAME   
WHERE a.counter_name = 'Buffer cache hit ratio'   
AND a.OBJECT_NAME = 'MSSQL$MS3001:Buffer Manager'  

理解

sys.dm_os_performance_counters 为服务器维护的每个性能计数器返回一行。

counter_name 计数器的名称

OBJECT_NAME 计数器的所属类别

Buffer Manager 对象提供了计数器,用于监视 SQL Server 如何使用:内存存储数据页、内部数据结构和过程缓存; 计数器监视 SQL Server 读取和写入数据库页时的物理 I/O。

Buffer Manager中的Buffer cache hit ratio base和Buffer cache hit ratio

Buffer cache hit ratio 官方解释在缓冲区高速缓存中找到而不需要从磁盘中读取的页的百分比。

平均每秒全表扫描数

命令

    SELECT cntr_value   
    FROM sys.dm_os_performance_counters   
    WHERE object_name = 'MSSQL$MS3001:Access Methods'  
    AND counter_name = 'Full Scans/sec'  

理解

Access Methods 对象提供用于监视如何访问数据库中的逻辑数据的计数器。

Full Scans/sec 每秒不受限制的完全扫描数。这些扫描可以是基表扫描,也可以是全文索引扫描。

每秒SQL编译

命令

    SELECT cntr_value   
    FROM sys.dm_os_performance_counters   
    WHERE object_name = 'MSSQL$MS3001:SQL Statistics'  
    AND counter_name = 'SQL Compilations/sec'  

理解
每秒的 SQL 编译数。 表示编译代码路径被进入的次数。 包括 SQL Server 中语句级重新编译导致的编译。 当 SQL Server 用户活动稳定后,该值将达到稳定状态。

每秒检查点写入Page数

命令

    SELECT cntr_value   
    FROM sys.dm_os_performance_counters   
    WHERE object_name = 'MSSQL$MS3001:Buffer Manager'   
    AND counter_name = 'Checkpoint pages/sec'  

理解

由要求刷新所有脏页的检查点或其他操作每秒刷新到磁盘的页数。

每秒登陆次数

命令

    SELECT cntr_value   
    FROM sys.dm_os_performance_counters   
    WHERE object_name = 'MSSQL$MS3001:General Statistics'  
    AND counter_name = 'Logins/sec'  

理解

General Statistics 对象提供计数器,用于监视服务器范围内的常规活动

Logins/sec 每秒启动的登录数。 这不包括已入池连接。

每秒锁超时

命令

    SELECT cntr_value   
    FROM sys.dm_os_performance_counters   
    WHERE object_name = 'MSSQL$MS3001:Locks'   
    AND counter_name = 'Lock Timeouts/sec'  
    AND instance_name = '_Total'  

理解

Locks 对象提供了有关各种资源类型的 SQL Server 锁的信息

Lock Timeouts/sec 每秒超时的锁请求数,包括对 NOWAIT 锁的请求。

每秒死锁

命令

    SELECT cntr_value   
    FROM sys.dm_os_performance_counters   
    WHERE object_name = 'MSSQL$MS3001:Locks'  
    AND counter_name = 'Number of Deadlocks/sec'  
    AND instance_name = '_Total'  

理解

Number of Deadlocks/sec 每秒导致死锁的锁请求数。

每秒锁等待

命令

    SELECT cntr_value   
    FROM sys.dm_os_performance_counters   
    WHERE object_name = 'MSSQL$MS3001:Locks'  
    AND counter_name = 'Lock Waits/sec'  
    AND instance_name = '_Total'  

解释

Lock Waits/sec 每秒要求调用者等待的锁请求数。

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭