Galera,
Hoje quero passar uma dica bem interessante para vocês de como descobrir quais as consultas que estão utilizando o recurso de paralelismo em seu servidor de banco de dados SQL Server.
É importante lembrar que utilizar paralelismo não é sempre ruim, pois agiliza o tempo de resposta das suas consultas.
O problema ocorre quando um grande número de consultas necessita deste recurso, elevando consideravelmente a utilização de CPU e causando uma fila de espera CXPACKET para outros processos.
A consulta que utilizo para esta análise é a seguinte:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
WITH XMLNAMESPACES
(DEFAULT ‘http://schemas.microsoft.com/sqlserver/2004/07/showplan’)
SELECT query_plan AS CompleteQueryPlan ,
n.value(‘(@StatementText)[1]’, ‘VARCHAR(4000)’) AS StatementText ,
n.value(‘(@StatementOptmLevel)[1]’, ‘VARCHAR(25)’)
AS StatementOptimizationLevel ,
n.value(‘(@StatementSubTreeCost)[1]’, ‘VARCHAR(128)’)
AS StatementSubTreeCost ,
n.query(‘.’) AS ParallelSubTreeXML ,
ecp.usecounts ,
ecp.size_in_bytes
FROM sys.dm_exec_cached_plans AS ecp
CROSS APPLY sys.dm_exec_query_plan(plan_handle) AS eqp
CROSS APPLY query_plan.nodes
(‘/ShowPlanXML/BatchSequence/Batch/Statements/StmtSimple’)
AS qn ( n )
WHERE n.query(‘.’).exist(‘//RelOp[@PhysicalOp=”Parallelism”]’) = 1
ORDER BY StatementSubTreeCost DESC
O resultado desta consulta retorna o comando TSQL e o plano de execução que está utilizando o recurso de paralelismo.
Desta forma é possível realizar uma análise detalhada deste plano de execução e procurar por operadores que possam causar essa utilização excessiva de paralelismo.
Espero que tenham gostado desta dica rápida e não deixe de inscrever-se no blog para receber todas as atualizações.
Grande abraço.
Otima dica.
Grande Augusto.
Fico feliz que tenha gostado.
Grande abraço.
Já está anotado para futuras utilizações.
Grande Cesar.
Se quiser sugerir algum assunto para os próximos posts, fique a vontade.
Grande abraço.
ótima dica!
Grande Nilton, tudo bem?
Fico extremamente contente que tenha gostado do artigo.
Caso necessite de qualquer ajuda é só falar comigo.
Grande abraço.