14. I/O関連カウンタ
PhysicalDisk Object:
Avg. Disk Queue Length
Avg. Disk Sec/Read
Avg. Disk Sec/Write
%Disk Time
Disk Transfers/Sec
Avg. Disk Bytes/Read
Avg. Disk Bytes/Write
Disk Read Bytes/Sec
Disk Write Bytes/Sec
14
18. I/O TOP 10
SELECT TOP 10
(qs.total_logical_reads + qs.total_logical_writes)
/qs.execution_count as [Avg IO],
substring (qt.text,qs.statement_start_offset/2,
(case when qs.statement_end_offset = -1
then len(convert(nvarchar(max), qt.text)) * 2
else qs.statement_end_offset end -
qs.statement_start_offset)/2)
as query_text,
qt.dbid,
qt.objectid
FROM sys.dm_exec_query_stats qs
cross apply sys.dm_exec_sql_text (qs.sql_handle) as qt
ORDER BY [Avg IO] DESC
18
21. CPU 関連カウンタ
Processor object:
Processor Information object:
%Privileged Time
%Processor Time
%User Time
Process object (SQL Server):
%Privileged Time
%Processor Time
%User Time
21
22. CPU 負荷の原因に関連するカウンタ
SQL Server:SQL Statistics
Batch requests/sec
SQL Compilations/sec
SQL Re-Compilations/sec
SQL Server:Cursor Manager by Type
SQL Server:Cursor Manager Total
複数同時のカーソル処理
はCPU負荷の原因となる
22
23. CPU関連DMV
sys.dm_exec_query_stats
sys.dm_exec_sessions sys.dm_exec_requests sys.dm_exec_procedure_stats sys.sysprocesses
sys.dm_exec_trigger_stats
cpu_time cpu_time total_worker_time
cpu
total_scheduled_t total_elapsed_tim
total_elapsed_time
ime e
Backward
total_elapsed_tim Sql_handle/query compatibility view
query_hash
e _hash
23
25. CPU TOP 10
SELECT TOP 10
SUM(query_stats.total_worker_time) AS "Total CPU Time",
SUM(query_stats.total_worker_time) /
SUM(query_stats.execution_count) AS "Avg CPU Time",
MIN(query_stats.statement_text) AS "Statement Text"
FROM
(SELECT QS.*,
SUBSTRING(ST.text, (QS.statement_start_offset/2) + 1,
((CASE statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE QS.statement_end_offset END
- QS.statement_start_offset)/2) + 1) AS statement_text
FROM sys.dm_exec_query_stats AS QS
CROSS APPLY sys.dm_exec_sql_text(QS.sql_handle) as ST) as
query_stats
GROUP BY query_stats.query_hash
ORDER BY 1 DESC;
25
sys.dm_os_wait_stats is an aggregated view of waitssys.dm_exec_requests is a snapshot view of current executing requests with wait infoSelect wait_type, waiting_tasks_count, wait_time_msfrom sys.dm_os_wait_statswhere wait_type like 'PAGEIOLATCH%' order by wait_typesys.dm_io_pending_io_requests shows all pending I/O requests.sys.dm_io_virtual_file_stats shows aggregated I/O stats for each database file. So it’s a good source for both identifying I/O problem and measuring/planning storage requirements.select database_id, file_id, io_stall,io_pending_ms_ticks,scheduler_addressfrom sys.dm_io_virtual_file_stats(NULL, NULL)t1,sys.dm_io_pending_io_requests as t2where t1.file_handle = t2.io_handle
One session could have multiple requestsTo find top 10 total cpu consuming queries:SELECT TOP 10 SUM(query_stats.total_worker_time) AS "Total CPU Time", SUM(query_stats.total_worker_time) / SUM(query_stats.execution_count) AS "Avg CPU Time", MIN(query_stats.statement_text) AS "Statement Text"FROM (SELECT QS.*, SUBSTRING(ST.text, (QS.statement_start_offset/2) + 1, ((CASE statement_end_offset WHEN -1 THEN DATALENGTH(st.text) ELSE QS.statement_end_offset END - QS.statement_start_offset)/2) + 1) AS statement_text FROM sys.dm_exec_query_stats AS QS CROSS APPLY sys.dm_exec_sql_text(QS.sql_handle) as ST) as query_statsGROUP BY query_stats.query_hashORDER BY 1 DESC;GO