SQL Server – Obtendo querys de maior custo de execução

Ao trabalhar com tuning e performance, uma maneira de identificar gargalos “de bate pronto” e, diretamente na base de dados / ambiente “problema”, é apoiar-se nas estatísticas mantidas para os planos de execução do ambiente. Refiro-me à [sys.dm_exec_query_stats].

Relacionando a DMV acima, com a [sys.dm_exec_sql_text(slq_handle)] obtemos a query t-sql responsável pelo plano. Como percebido, esta função espera o parâmetro [sql_handle] que é obtido junto às estatísticas do mesmo na [sys.dm_exec_query_stats].

Abaixo apresento como abordagem para ranking de custo, a média de leituras físicas feitas pelas execuções de cada plano. Agora que conhecemos nossos gargalos – ordenados de maior à menor custo – nos resta apenas atacá-los!

select	        execution_count
	,	statement_start_offset
	,	sql_handle
	,	plan_handle
	,	total_logical_reads / execution_count as avg_logical_reads
	,	total_logical_writes / execution_count as avg_logical_writes
	,	total_physical_reads / execution_count as avg_physical_reads
	,	t.text
from    
	sys.dm_exec_query_stats as s
		cross apply sys.dm_exec_sql_text(s.sql_handle) as t
order by 
	avg_physical_reads desc

P.S.: As estatísticas apresentadas pela [sys.dm_exec_query_stats] são coletadas e mantidas desde o útimo start do serviço de banco de dados. Caso um restart se dê no ambiente, estes acumuladores são “perdidos”, dando início à novas contagens.

T+

Referências:
https://www.simple-talk.com/sql/performance/a-performance-troubleshooting-methodology-for-sql-server/

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s