Estou executando o seguinte select:
SELECT tstats.object_id, tstats.database_id, tstats.sql_handle,
DB_NAME(tstats.database_id) AS [db_name], OBJECT_NAME(tstats.object_id) AS
trigger_name, tstats.execution_count, tstats.total_worker_time,
tstats.total_logical_reads, tstats.total_logical_writes, OBJECT_NAME(trgs.parent_id) AS
trigger_parent, getdate() AS [timestamp] FROM sys.dm_exec_trigger_stats tstats INNER
JOIN sys.triggers trgs ON tstats.object_id = trgs.object_id ORDER BY object_id asc
A versão do servidor SQL é o padrão 2019 (RTM-CU24).
O problema é que alguns dos gatilhos são retornados duas vezes (mesmo ID de objeto, contagem de execução diferente e outras estatísticas):
Estou tentando fazer uma amostra deste sys.dm_exec_trigger_stats
DMV e fazer deltas por minuto para ver quais gatilhos estão prejudicando o desempenho do aplicativo - pensei que a combinação do nome do banco de dados, o nome pai do gatilho e o nome do gatilho (ou object_id) fossem exclusivos. Eles são retornados várias vezes com estatísticas de tempo de execução diferentes que não consigo entender. Dicas apreciadas.
Existirão várias entradas de cache para o mesmo gatilho quando a chave de cache for diferente, geralmente devido a diferentes
SET
opções de sessão. Esta versão da sua consulta retorna os pares atributo/valor da chave de cache para cada plano em uma única coluna.Você pode agregar linhas para o mesmo gatilho para evitar duplicações, o que pode ser bom o suficiente para seu propósito, mas esteja ciente de que isso pode não contar a história completa, pois cada plano foi compilado de forma independente e pode ser diferente.