CentOS 上 SQL Server 性能监控实操指南
一 监控体系与总体思路
二 数据库内置监控
sqlcmd -S <host_or_ip>,<port> -U <user> -P <pwd> -Q "SELECT @@SERVERNAME, @@VERSION, SERVERPROPERTY('ProductVersion')"SELECT session_id, request_id, task_state, wait_type, wait_time_ms, blocking_session_id FROM sys.dm_exec_requests WHERE session_id <> @@SPID;SELECT TOP 20 session_id, request_id, start_time, command, text, cpu_time, reads, writes FROM sys.dm_exec_requests r CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) st ORDER BY cpu_time DESC;EXEC sp_spaceused; 与 DBCC SQLPERF(LOGSPACE);sys.dm_os_wait_stats、sys.dm_db_index_usage_stats、sys.dm_exec_query_stats 等,用于等待、索引、执行统计。三 操作系统层监控
top、htop、vmstat 1、uptimeiostat -x 1、nmonnetstat -s、sar -n DEV 1pmap -x <sqlservr_pid>pidof sqlservr 或 ps -ef | grep sqlservrtop -p $(pidof sqlservr)、htop -p <pid>四 可视化与告警平台
prometheus.yml 增加 job:scrape_configs:
- job_name: 'sqlserver'
static_configs:
- targets: ['<exporter_host>:<port>']
五 落地步骤与关键 SQL
VIEW SERVER STATE 等必要权限;SELECT @@SERVERNAME, @@VERSION, SERVERPROPERTY('ProductVersion');SELECT session_id, request_id, task_state, wait_type, wait_time_ms, blocking_session_id FROM sys.dm_exec_requests WHERE session_id <> @@SPID;DBCC SQLPERF(LOGSPACE);SELECT TOP 20 session_id, request_id, start_time, command, text, cpu_time, reads, writes FROM sys.dm_exec_requests r CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) st ORDER BY cpu_time DESC;SELECT OBJECT_NAME(object_id) AS tbl, used, rows FROM sys.dm_db_partition_usage_stats WHERE database_id = DB_ID();SELECT OBJECT_NAME(object_id) AS tbl, stats_date(object_id, stats_id) AS stats_updated FROM sys.stats WHERE database_id = DB_ID();