Você sabe o que são (statements, batchs, query_hash e query_plan_hash) no SQL SERVER?
Hello people! Espero que estejam todos ótimo :)
Hoje eu gostaria de falar sobre uma sopa de palavras, mas que são muito importantes para o entendimento do sql server. resolvi escrever sobre esses termos, pois vejo que alguns DBAs possuem dúvidas sobre, ou até mesmo desconhecem.
Irei começar explicando sobre o BATCH e o STATEMENT, abaixo um resumo de cada palavra
BATCH: No Transact-SQL, um lote é um conjunto de instruções SQL enviadas juntas e executadas como um grupo, uma após a outra.
STATEMENT: É uma unidade atômica de trabalho e é completamente bem-sucedida ou falha completamente.
Agora que sabemos o que cada uma dessa palavra significa, segundo a própria Microsoft, vou mostrar um exemplo, onde podemos ver um BATCH que possui 3 statements:
Agora que você sabe o que é um BATCH e um STATEMENT, vamos reutilizar o exemplo acima para explicar o que é QUERY_HASH E UM QUERY_PLAN_HASH, mas antes vamos as definições:
QUERY_HASH : Valor de hash binário calculado na consulta e usado para identificar consultas com lógica semelhante.
QUERY_PLAN_HASH: Valor de hash binário calculado no plano de execução de consulta e usado para identificar planos de execução de consulta semelhantes
O que eu gostaria de destacar nesse ponto, é sobre o query_hash. Ele é um identificador único para cada query que possuem a mesma lógica, vamos a um exemplo:
Será que essas duas consultas possuem o mesmo query_hash? Vamos verificar..
Para a consulta 1, temos o query_hash = 0x9924D813C14E8EF9
Para a consulta 2, temos o query_hash = 0x9924D813C14E8EF9
Podemos reparar que é o mesmo query_hash, pois as consultas possuem a mesma lógica mudando apenas o predicado de busca.
Nesse exemplo eu busquei o query_hash pelo plano de execução, mas poderia pegar pelas DMvs também, como por exemplo:
Links de referências:
https://docs.microsoft.com/en-us/sql/t-sql/statements/statements?view=sql-server-ver16
https://stackoverflow.com/questions/1703847/what-is-a-batch
https://docs.microsoft.com/pt-br/sql/relational-databases/system-dynamic-management-views/sys-dm-exec-query-stats-transact-sql?view=sql-server-ver16
Comentários
Postar um comentário