Dicas para um DBA Iniciante – Encontrando consultas utilizando muitas operações de I/O

Galera,

Recentemente passei por um cenário no qual um dos servidores de um cliente apresentava momentos de extrema lentidão ao executar alguns relatórios operacionais e durante o processo de troubleshooting foi possível identificar o wait type PAGEIOLATCH ocorrendo muitas vezes.

Com esta informação mantive o foco em encontrar as consultas que utilizavam uma grande quantidade de operações de I/O e assim iniciar uma análise mais detalhada dos planos de execução entendendo a razão desta alta quantidade de operações de I/O.

Para isto utilizei a query abaixo, que quero compartilhar com vocês.

WITH QueryIO AS 
(
    SELECT TOP 1000
        [Average IO] = (total_logical_reads + total_logical_writes) / qs.execution_count,
        [Total IO] = (total_logical_reads + total_logical_writes),
        [Execution count] = qs.execution_count,
        [Individual Query] = 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
                  ),
        [Parent Query] = qt.text,
        DatabaseName = DB_NAME(qt.dbid)
    FROM 
        sys.dm_exec_query_stats qs
    CROSS APPLY 
        sys.dm_exec_sql_text(qs.sql_handle) AS qt
    WHERE 
        (total_logical_reads + total_logical_writes) / qs.execution_count > 1000
    ORDER BY 
        [Total IO] DESC
)
SELECT 
    * 
FROM 
    QueryIO 
ORDER by 
    [Execution count] desc

Executando a consulta no servidor de banco de dados SQL Server, obtivemos um resultado semelhante ao ilustrado na Figura 1.

IO_Results
Figura 1 – Consultas utilizando grande quantidade de operações de I/O

Após a análise das 5 primeiras consultas, retornadas já foi possível identificar a causa da lentidão e solucionar em definitivo o problema.

Espero que gostem e não deixem de inscrever-se no blog, no canal do youtube e no grupo de discussão SQLManiacs.

Grande abraço a todos.

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

%d blogueiros gostam disto: