Files
chill_notes/数据库/Cpu 占用过高.md
2026-04-21 21:13:51 +08:00

1.1 KiB
Executable File

CPU 占用过高排查

SQL Server 查询最耗 CPU 的 SQL 语句

查询最耗 CPU 的语句

SELECT TOP 10
    total_worker_time / execution_count AS avg_cpu_cost,
    plan_handle,
    execution_count,
    (SELECT SUBSTRING(
        text,
        statement_start_offset / 2 + 1,
        (CASE
            WHEN statement_end_offset = -1
            THEN LEN(CONVERT(nvarchar(max), text)) * 2
            ELSE statement_end_offset
        END - statement_start_offset) / 2
    ) FROM sys.dm_exec_sql_text(sql_handle)) AS query_text
FROM sys.dm_exec_query_stats
ORDER BY [avg_cpu_cost] DESC

常用排查命令

-- 查看当前会话
EXEC sp_who2

-- 查看锁
EXEC sp_lock

-- 查看 CPU 使用
SELECT 
    session_id,
    status,
    cpu_time
FROM sys.dm_exec_requests
ORDER BY cpu_time DESC

常见原因

原因 解决方法
缺少索引 添加适当索引
统计信息过时 UPDATE STATISTICS
低效查询 优化 SQL
过多编译 使用参数化查询

💡 定期检查慢查询,持续优化。