SqlServer性能監控指標(部分)

以下內容,有些細節字段後續再豐富,目前只是供自己整理

 

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.查詢緩存的各類執行計劃分別佔用了多少內存

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章