sqlserver 数据库之调优

1.查询CPU开销大的语句

SELECT top 100
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,creation_time
FROM sys.dm_exec_query_stats
where creation_time > '2014-11-01'
and (total_worker_time/execution_count) > 146341
ORDER BY [avg_cpu_cost] DESC


2.查询阻塞

SELECT a.* FROM sys.[sysprocesses] a
WHERE a.[spid]>50 AND DB_NAME(a.[dbid])='DBName' and a.spid <> @@SPID and a.blocked > 0

3.查询连接数 当前连接的查询

SELECT COUNT(*) FROM [sys].[dm_exec_sessions] WHERE [session_id]>50

4.存储过程物理读

SELECT TOP (50) p.[name] AS [SP Name]
,qs.total_physical_reads AS [TotalPhysicalReads]
,qs.total_physical_reads / qs.execution_count AS [AvgPhysicalReads]
,qs.execution_count
,qs.total_logical_reads
,qs.total_elapsed_time
,qs.total_elapsed_time / qs.execution_count AS [avg_elapsed_time]
,qs.cached_time
FROM sys.procedures AS p
INNER JOIN sys.dm_exec_procedure_stats AS qs ON p.[object_id] = qs.[object_id]
WHERE qs.database_id = DB_ID()
AND qs.total_physical_reads > 0
ORDER BY qs.total_physical_reads DESC

原文地址:https://www.cnblogs.com/brain008/p/14487268.html