DMV's e DMF's do SQL Server 2008 e posteriores
DMVs (Dynamic Management Views) e DMF (Dynamic Management Functions) são dois conjuntos de objetos do SQL Server, disponíveis desde a versão 2008, que retornam inforemações sobre o estado do servidor, e podem ser usadas para monitorar a saúde de uma instância, diagnosticar problemas e melhorar a performance. Na versão 2014, temos 166 DMVs e 35 DMFs.
Vou começar esta série com as minhas 3 favoritas:
sys.dm_exec_query_stats
sys.dm_exec_sql_text()
sys.dm_exec_query_plan()
Esta é uma das queries que eu utilizo para identificar quais as queries mais caras rodando na instância do SQL Server. Este script é bem simples, e sei de outras versões disponíveis em diversos blogs, mas este traz as informações básicas que eu preciso para começar a avaliar um ambiente.
SELECT TOP 10
SUBSTRING(qt.TEXT, (qs.statement_start_offset/2)+1,
((CASE qs.statement_end_offset WHEN -1 THEN DATALENGTH(qt.TEXT) ELSE
qs.statement_end_offset END - qs.statement_start_offset)/2)+1) as query_text, qs.execution_count, qs.total_logical_reads, qs.last_logical_reads, qs.total_logical_writes, qs.last_logical_writes, qs.total_worker_time, qs.last_worker_time, qs.total_elapsed_time/1000000 total_elapsed_time_in_S, qs.last_elapsed_time/1000000 last_elapsed_time_in_S, qs.last_execution_time, qp.query_plan FROM sys.dm_exec_query_stats qs CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp ORDER BY qs.total_logical_reads DESC -- logical reads -- ORDER BY qs.total_logical_writes DESC -- logical writes -- ORDER BY qs.total_worker_time DESC -- CPU time