以下內容,有些細節字段後續再豐富,目前只是供自己整理
1.SqlServer已獲得的頁面數(緩衝池)
SELECT
cntr_value
FROM
sys.dm_os_performance_counters
WHERE
object_name = 'SQLServer:Buffer Manager'
AND counter_name = 'Database pages'
2.SqlServer緩衝池必須的理想頁面數
SELECT
cntr_value
FROM
sys.dm_os_performance_counters
WHERE
object_name = 'SQLServer:Buffer Manager'
AND counter_name = 'Target pages'
3.數據頁在緩衝池中駐留的時間,這個時間一般會大於 300 單位 s
SELECT
cntr_value
FROM
sys.dm_os_performance_counters
WHERE
object_name = 'SQLServer:Buffer Manager'
AND counter_name = 'Page life expectancy'
4.數據庫緩衝池高速緩衝命中率,被請求的數據在緩衝池中被找到的概率,一般會大於 98% 纔算正常,否則可能是緩衝池容量太小
SELECT
cntr_value
FROM
sys.dm_os_performance_counters
WHERE
object_name = 'SQLServer:Buffer Manager'
AND counter_name = 'Buffer cache hit ratio'
5.檢查點每秒寫入磁盤的髒頁個數,如果數據過高,證明缺少內存容量
SELECT
cntr_value
FROM
sys.dm_os_performance_counters
WHERE
object_name = 'SQLServer:Buffer Manager'
AND counter_name = 'Checkpoint pages/sec'
6.緩存池中每秒讀寫的頁數
SELECT
cntr_value
FROM
sys.dm_os_performance_counters
WHERE
object_name = 'SQLServer:Buffer Manager'
AND counter_name = 'Page reads/sec';
SELECT
cntr_value
FROM
sys.dm_os_performance_counters
WHERE
object_name = 'SQLServer:Buffer Manager'
AND counter_name = 'Page writes/sec'
7.每秒全表掃描次數
SELECT
*
FROM
sys.dm_os_performance_counters
WHERE
object_name = 'SQLServer:Access Methods'
AND counter_name = 'Full Scans/sec'
8.每秒頁面拆分次數
SELECT
*
FROM
sys.dm_os_performance_counters
WHERE
object_name = 'SQLServer:Access Methods'
AND counter_name = 'Page Splits/sec'
9.等待內存授權的進程隊列
SELECT
*
FROM
sys.dm_os_performance_counters
WHERE
object_name = 'SQLServer:Memory Manager'
AND counter_name = 'Memory Grants Pending'
10.每秒創建臨時表和臨時變量的數量
SELECT
*
FROM
sys.dm_os_performance_counters
WHERE
object_name = 'SQLServer:General Statistics'
AND counter_name = 'Temp Tables Creation Rate'
11.正在等待銷燬的臨時表的數量
SELECT
*
FROM
sys.dm_os_performance_counters
WHERE
object_name = 'SQLServer:General Statistics'
AND counter_name = 'Temp Tables For Destruction'
12.每秒批處理請求次數
SELECT
*
FROM
sys.dm_os_performance_counters
WHERE
object_name = 'SQLServer:SQL Statistics'
AND counter_name = 'Batch Requests/sec'
13.每秒鎖等待數目
SELECT
cntr_value
FROM
sys.dm_os_performance_counters
WHERE
object_name = 'SQLServer:Locks'
AND instance_name = '_Total'
AND counter_name = 'Lock Waits/Sec'
14.緩存池中的頁壽命
SELECT
cntr_value
FROM
sys.dm_os_performance_counters
WHERE
object_name = 'SQLServer:Buffer Manager'
AND counter_name = 'Page life expectancy'
15.數據庫剩餘空間
SELECT
*
FROM
master.sys.sysperfinfo
WHERE
object_name = 'SQLServer:Memory Manager'
AND counter_name = 'Free Memory (KB)'
16.當前已連接的會話數
SELECT
cntr_value
FROM
sys.dm_os_performance_counters
WHERE
object_name = 'SQLServer:General Statistics'
AND counter_name = 'User Connections'
17.數據庫服務啓動的時間
SELECT
sqlserver_start_time AS start_time
FROM
sys.dm_os_sys_info
18.每秒編譯執行數量
SELECT
cntr_value
FROM
sys.dm_os_performance_counters
WHERE
object_name = 'SQLServer:SQL Statistics'
AND counter_name = 'SQL Compilations/Sec'
19.服務總內存
SELECT
*,
CAST (
cntr_value / 1024.0 AS DECIMAL ( 20, 1 )) MemoryMB
FROM
master.sys.sysperfinfo
WHERE
counter_name = 'Total Server Memory (KB)'
20.每秒重編譯數量
SELECT
cntr_value
FROM
sys.dm_os_performance_counters
WHERE
object_name = 'SQLServer:SQL Statistics'
AND counter_name = 'SQL Re-Compilations/Sec'
21.緩衝池中每秒懶寫入的個數
SELECT
cntr_value
FROM
sys.dm_os_performance_counters
WHERE
object_name = 'SQLServer:Buffer Manager'
AND counter_name = 'Lazy writes/sec';
22.鎖平均等待時間
SELECT
*
FROM
sys.dm_os_performance_counters
WHERE
object_name = 'SQLServer:Wait Statistics'
23.進程在隊列中等待內存鎖花費的時間
SELECT
*
FROM
sys.dm_os_performance_counters
WHERE
object_name = 'SQLServer:Wait Statistics' and
counter_name = 'Memory grant queue waits'
and instance_name = 'Average wait time (ms)'
24.計劃緩衝區中不同緩衝池的命中率
SELECT
instance_name,
round(
CAST ( SUM ( CASE WHEN counter_name = 'Cache Hit Ratio' THEN cntr_value ELSE 0 END ) AS DECIMAL ( 38, 16 ) ) / SUM ( CASE WHEN counter_name = 'Cache Hit Ratio Base' THEN cntr_value ELSE 0 END ) * 100,
2
) AS b
FROM
sys.dm_os_performance_counters
WHERE
object_name = 'SQLServer:Plan Cache'
GROUP BY
instance_name
HAVING
SUM ( CASE WHEN counter_name = 'Cache Hit Ratio Base' THEN cntr_value ELSE 0 END ) <>0
25.當前數據庫高消耗的SQL
SELECT
objectid,
total_cpu_time,
total_exec_count,
num_of_statment,
total_logical_reads / total_exec_count AS avg_logical_reads,
total_logical_writes / total_exec_count AS avg_logical_writes,
total_physical_reads / total_exec_count AS avg_physical_reads,
text
FROM
(
SELECT
qs.sql_handle,
SUM ( qs.total_worker_time ) AS total_cpu_time,
CAST (
SUM ( qs.execution_count ) AS DECIMAL ( 38, 16 )) AS total_exec_count,
COUNT ( * ) AS num_of_statment,
SUM ( total_logical_reads ) AS total_logical_reads,
SUM ( total_logical_writes ) AS total_logical_writes,
SUM ( total_physical_reads ) AS total_physical_reads
FROM
sys.dm_exec_query_stats qs
GROUP BY
qs.sql_handle
) dt CROSS apply sys.dm_exec_sql_text ( dt.sql_handle ) eqp
WHERE
objectid IS NOT NULL
26.當前數據庫有阻塞和物理IO多的session
SELECT
session_id,
request_id,
start_time,
status,
command,
sql_handle,
plan_handle,
database_id,
user_id,
connection_id,
blocking_session_id,
wait_type,
wait_time,
wait_resource,
open_transaction_count,
open_resultset_count,
transaction_id,
cpu_time,
total_elapsed_time,
reads,
writes,
logical_reads,
lock_timeout,
granted_query_memory
FROM
sys.dm_exec_requests
WHERE
( logical_reads <> 0 AND reads / logical_reads >= 0.2 )
OR blocking_session_id <> 0
27.死鎖數
SELECT
*
FROM
sys.dm_os_performance_counters
WHERE
object_name = 'SQLServer:Locks'
AND counter_name = 'Number of Deadlocks/sec'
AND instance_name = '_Total'
28.閂等待的平均時間
SELECT
*
FROM
sys.dm_os_performance_counters
WHERE
object_name = 'SQLServer:Latches'
AND counter_name = 'Average Latch Wait Time (ms)'
29.進程阻塞個數
SELECT
*
FROM
sys.dm_os_performance_counters
WHERE
object_name = 'SQLServer:General Statistics'
AND counter_name = 'Processes blocked'
30.版本信息
SELECT SERVERPROPERTY('productversion'),SERVERPROPERTY('productlevel'),SERVERPROPERTY('edition')
31.數據庫啓動時間
SELECT sqlserver_start_time FROM sys.dm_os_sys_info
32.查詢緩存的各類執行計劃分別佔用了多少內存