Estou tentando descobrir os Planos de Execução que tem Probe Residual
.
Precisa saber o seguinte
- Qual operador físico e lógico tem esse
Probe Residual
- Qual é o % de custo desse operador na consulta
- Plano de Execução Associado
- Texto da consulta
A seguir está uma tentativa que fiz - mas estou preso por obter outros detalhes. Como obter esses detalhes?
Obs: Estou usando o SQL Server 2012
WITH XMLNAMESPACES
(
DEFAULT 'http://schemas.microsoft.com/sqlserver/2004/07/showplan'
)
SELECT
DECP.cacheobjtype,
DECP.objtype,
DECP.plan_handle,
DEQP.objectid,
DEQP.query_plan,
DEST.[text]
FROM sys.dm_exec_cached_plans AS DECP
CROSS APPLY sys.dm_exec_query_plan(DECP.plan_handle) AS DEQP
CROSS APPLY sys.dm_exec_sql_text(DECP.plan_handle) AS DEST
WHERE
1 = DEQP.query_plan.exist(
'//RelOp[
@PhysicalOp = "Hash Match"
]')
Um exemplo de resíduo de sonda
Referências de blogs/artigos de Grant Fritchey e Rob Farley abaixo
- Investigar resíduo em correspondência de hash - lar do assustador DBA
- Probe Residual quando você tem um Hash Match – um custo oculto nos planos de execução
O que você deseja fazer é usar o método nodes() (tipo de dados xml) em uma aplicação cruzada para fragmentar
RelOp
os nós, para que você possa usar o método value() (tipo de dados xml) para obter os valores de propriedade que está procurando.Você está procurando especificamente os
RelOp
nós que possuem umHash/ProbeResidual
nó, portanto, você deve usá-lo em um predicado no parâmetro XQuery para anodes()
função.