Query só fica rápida somente após recriar o índice
Boa noite, será que alguém consegue me ajudar com o caso abaixo?
Tenho uma query que quando executada demora aproximadamente 15 segundos.
Quando eu recrio o indice, a mesma query passa a levar 1 segundo.
O Problema é que a cada novo registro inserido na tabela a query volta a apresentar lentidão e só fica rápida se novamente o índice for recriado.
Tenho uma query que quando executada demora aproximadamente 15 segundos.
Quando eu recrio o indice, a mesma query passa a levar 1 segundo.
O Problema é que a cada novo registro inserido na tabela a query volta a apresentar lentidão e só fica rápida se novamente o índice for recriado.
Charles
Curtidas 0
Respostas
Arthur Heinrich
14/09/2023
Este não é o comportamento natural de um banco de dados.
Uma coisa que pode estar ocorrendo é que, ao recriar o índice, o banco faz um full scan na tabela e a armazena em cache. Uma query executada a seguir, provavelmente vai encontrar todos os dados em memória, executando mais rapidamente.
Passado algum tempo, outras queries do banco vão invalidando o cache e, ao executar a query novamente, precisará acessar blocos em disco, tornando a execução mais lenta.
Sua query também pode estar com plano de acesso incorreto, ou dependa de muitos dados.
Enfim, não parece ser um problema de banco (SGBD), mas de modelagem (Aplicação).
Uma coisa que pode estar ocorrendo é que, ao recriar o índice, o banco faz um full scan na tabela e a armazena em cache. Uma query executada a seguir, provavelmente vai encontrar todos os dados em memória, executando mais rapidamente.
Passado algum tempo, outras queries do banco vão invalidando o cache e, ao executar a query novamente, precisará acessar blocos em disco, tornando a execução mais lenta.
Sua query também pode estar com plano de acesso incorreto, ou dependa de muitos dados.
Enfim, não parece ser um problema de banco (SGBD), mas de modelagem (Aplicação).
GOSTEI 0
Charles
14/09/2023
Este não é o comportamento natural de um banco de dados.
Uma coisa que pode estar ocorrendo é que, ao recriar o índice, o banco faz um full scan na tabela e a armazena em cache. Uma query executada a seguir, provavelmente vai encontrar todos os dados em memória, executando mais rapidamente.
Passado algum tempo, outras queries do banco vão invalidando o cache e, ao executar a query novamente, precisará acessar blocos em disco, tornando a execução mais lenta.
Sua query também pode estar com plano de acesso incorreto, ou dependa de muitos dados.
Enfim, não parece ser um problema de banco (SGBD), mas de modelagem (Aplicação).
Uma coisa que pode estar ocorrendo é que, ao recriar o índice, o banco faz um full scan na tabela e a armazena em cache. Uma query executada a seguir, provavelmente vai encontrar todos os dados em memória, executando mais rapidamente.
Passado algum tempo, outras queries do banco vão invalidando o cache e, ao executar a query novamente, precisará acessar blocos em disco, tornando a execução mais lenta.
Sua query também pode estar com plano de acesso incorreto, ou dependa de muitos dados.
Enfim, não parece ser um problema de banco (SGBD), mas de modelagem (Aplicação).
O estranho é que mesmo reiniciando a instancia do banco de dados as consultas nos registros existentes antes do rebuild do indice ficam rápidas e somente as consultas aos registros inseridos após o rebuild ficam lentas.
GOSTEI 0
Emerson Nascimento
14/09/2023
qual o banco de dados?
qual o comando utilizado para criar o índice?
qual o comando utilizado para criar o índice?
GOSTEI 0