Como desenvolvedor e DBA que geralmente prefere a tecnologia, mas se estivermos administrando uma grande organização, precisamos ser mais flexíveis com todas as tecnologias. Um dos meus grandes clientes bancários usa vários bancos de dados para fazer várias transações diferentes. Eles também estão usando muitas soluções de cache diferentes para seus negócios, bem como hardware de primeira linha. Tive uma conversa muito interessante com meu cliente sobre o tópico de como recuperar consultas, não do cache para MySQL e SQL Server, discutimos SQL_NO_CACHE e OPTION (RECOMPILE). Discutimos durante a Verificação abrangente de integridade do desempenho do banco de dados .
Vamos ver dois exemplos diferentes hoje para MySQL e SQL Server. Ambos os bancos de dados relacionais aproveitam o cache de memória para nos retornar os dados. Vamos ver como podemos escrever uma consulta onde não usaremos os resultados armazenados em cache, mas obteremos nossos dados diretamente do disco do SQL Server e não do cache.
Consulta do SQL Server – OPÇÃO (RECOMPILAR)
SELECT Columnname FROM TableName OPTION(RECOMPILE)
Consulta MySQL SQL_NO_CACHE
SELECT SQL_NO_CACHE Columnname FROM TableName OPTION(RECOMPILE)
Quando você usa SQL_NO_CACHE e OPTION (RECOMPILE), os bancos de dados relacionais (MySQL e SQL Server respectivamente) estão recuperando diretamente os dados do disco em vez do que está armazenado no cache.
Aqui estão algumas postagens de blog relevantes sobre o mesmo tópico, que você pode achar interessante.
- SQL SERVER – Listar plano de consulta, tamanho do cache, texto e contagem de execução
- SQL SERVER – Encontrando o plano de consulta mais antigo do cache
- SQL SERVER – Planejar cache e cache de dados na memória
- SQL SERVER – Procedimento armazenado – Limpar cache e limpar buffer
- SQL SERVER – Remova todos os planos de consulta em cache não usados em determinado período
- SQL SERVER – Script para obter o plano compilado com parâmetros do cache
- SQL SERVER – Planejar Cache – Recuperar e Remover – Um Script Simples
- SQL SERVER – 2017 – Script para limpar o cache de procedimento no nível do banco de dados