Usando extend event para verificar quantas vezes uma query executou no banco.
Olá pessoal, espero que estejam todos bem!
Hoje vim trazer para vocês uma maneira de contar quantas vezes uma determinada query foi executada no SQL-SERVER.
Vamos utilizar o extend event para fazer essa contagem.
Primeiro passo é descobrir qual é o queryhash dessa query, queryhash é o identificador da query, podemos pegar esse queryhash recuperando o plano de execução ou via DMV, irei demonstrar pegando pelo plano de execução:
Agora que pegamos o queryhash, que nesse caso é "0xBA334941B40ABB82", precisamos converter ele para bigint, pois o tipo de dados do extend event é diferente do tipo de dados do plano de execução.
Agora vamos pegar esse número e construir um extend event com os eventos abaixo:
- sp_statement_completed
- sql_batch_completed
- sql_statement_completed
abaixo tenho a quantidade de execuções:
Vou colocar o código aqui, vai que o GIT... shushsus
Obs: Existem outros métodos, como por exemplo utilizar o query store :)
É isso pessoal, espero que tenham gostado, até a próxima!
CREATE EVENT SESSION [qtd_exec_query] ON SERVER
ADD EVENT sqlserver.sp_statement_completed(SET collect_statement=(1)
ACTION(sqlserver.query_hash,sqlserver.query_hash_signed,sqlserver.query_plan_hash,sqlserver.query_plan_hash_signed,sqlserver.sql_text)
WHERE ([package0].[equal_int64]([sqlserver].[query_hash_signed],(-5029595812300407934.)))),
ADD EVENT sqlserver.sql_batch_completed(
ACTION(sqlserver.query_hash,sqlserver.query_hash_signed,sqlserver.query_plan_hash,sqlserver.query_plan_hash_signed)
WHERE ([package0].[equal_int64]([sqlserver].[query_hash_signed],(-5029595812300407934.)))),
ADD EVENT sqlserver.sql_statement_completed(SET collect_statement=(1)
ACTION(sqlserver.query_hash,sqlserver.query_hash_signed,sqlserver.query_plan_hash,sqlserver.query_plan_hash_signed)
WHERE ([package0].[equal_int64]([sqlserver].[query_hash_signed],(-5029595812300407934.))))
ADD TARGET package0.event_file(SET filename=N'C:\temp\query_qtd.xel')
WITH (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=30 SECONDS
,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=NONE,TRACK_CAUSALITY=OFF,STARTUP_STATE=OFF)
Comentários
Postar um comentário