SQL Server查询获取不同性能指标的信息

下面是格式化、优化并添加详细注释说明的SQL Server查询,用于获取不同性能指标的信息:

-- 获取阻塞的SPID数量
SELECT 'Blocked SPIDs' as MetricName, COUNT(DISTINCT blocking_session_id) as MetricValue
FROM sys.dm_exec_requests
WHERE blocking_session_id > 0

UNION ALL

-- 获取锁定数量
SELECT 'Locks' as MetricName, COUNT(DISTINCT request_session_id) as MetricValue
FROM sys.dm_tran_locks

UNION ALL

-- 获取等待统计信息中的总等待时间
SELECT 'Wait Stats' as MetricName, SUM(wait_time_ms) as MetricValue
FROM sys.dm_os_wait_stats

UNION ALL

-- 获取最长运行的查询的总耗时
SELECT 'Longest Running Queries' as MetricName, MAX(total_elapsed_time) as MetricValue
FROM sys.dm_exec_requests

UNION ALL

-- 获取消耗最多CPU时间的查询的CPU使用量
SELECT 'CPU Usage' as MetricName,
       (SELECT TOP 1
           CAST((total_worker_time / (1000.0 * 60 * 60)) AS DECIMAL(10,2)) as MetricValue
        FROM sys.dm_exec_query_stats
        ORDER BY total_worker_time DESC
       )

UNION ALL

-- 获取内存使用情况(以MB为单位)
SELECT 'Memory Usage' as MetricName,
       (physical_memory_in_use_kb / 1024.0) as MetricValue
FROM sys.dm_os_process_memory

这个查询将返回以下性能指标的信息:

  1. ‘Blocked SPIDs’:阻塞的会话数量。
  2. ‘Locks’:当前锁定的会话数量。
  3. ‘Wait Stats’:等待统计信息中的总等待时间(以毫秒为单位)。
  4. ‘Longest Running Queries’:最长运行的查询的总耗时(以毫秒为单位)。
  5. ‘CPU Usage’:消耗CPU时间最多的查询的CPU使用量(以小时为单位)。
  6. ‘Memory Usage’:服务器进程占用的物理内存使用量(以MB为单位)。

用于获取消耗CPU时间最多的查询的CPU使用量:

-- 获取消耗CPU时间最多的查询的CPU使用量
SELECT TOP 1
    -- 将总工作时间(以毫秒为单位)转换为小时并保留两位小数
   CAST((total_worker_time / (1000.0 * 60 * 60)) AS DECIMAL(10,2)) as MetricValue
FROM sys.dm_exec_query_stats
-- 按总工作时间降序排序查询统计信息,以找到最耗时的查询
ORDER BY total_worker_time DESC

这个查询将返回消耗CPU时间最多的查询的CPU使用量,以小时为单位,并将其命名为 “MetricValue”。注释提供了关于查询目的和排序方式的说明。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值