PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Otimizar tabelas somente leitura do PostgreSQL


Colunas usadas para filtragem ou participar (ou, em menor grau, classificação ) são de interesse para indexação. As colunas recém-selecionadas são pouco relevantes!Para a consulta a seguir, apenas índices em a e e pode ser útil:
SELECT a,b,c,d
FROM   tbl_a
WHERE  a = $some_value
AND    e < $other_value;

Aqui, f e possivelmente c também são candidatos:
SELECT a,b,c,d
FROM   tbl_a
JOIN   tbl_b USING (f)
WHERE  a = $some_value
AND    e < $other_value
ORDER  BY c;

Depois de criar índices, teste para ver se eles são realmente úteis com EXPLAIN ANALYZE . Compare também os tempos de execução com e sem os índices. Excluir e recriar índices é rápido e fácil. Também há parâmetros para experiment com EXPLAIN ANALYZE . A diferença pode ser impressionante ou inexistente.
Como suas tabelas são somente leitura, a manutenção do índice é barata. É apenas uma questão de espaço em disco.

Se você realmente quer saber o que está fazendo, comece lendo os documentos .

Se você não sabe quais consultas esperar...


  1. Tente registrar consultas suficientes para encontrar casos de uso típicos. Consultas de log com o parâmetro log_statement = all por isso. Ou apenas registre consultas lentas usando log_min_duration_statement .

  2. Crie índices que pode ser útil e verifique as estatísticas depois de algum tempo para ver o que realmente é usado. O PostgreSQL tem uma infraestrutura completa para estatísticas de monitoramento . Uma maneira conveniente de estudar estatísticas (e muitas outras tarefas) é pgAdmin onde você pode escolher sua tabela/função/índice e obter todos os dados na aba "estatísticas" no navegador de objetos (janela principal).

  3. Proceda conforme descrito acima para ver se os índices em uso realmente aceleram as coisas.

  4. Se o planejador de consultas optar por usar um ou mais de seus índices, mas sem nenhum efeito ou efeito adverso, provavelmente algo está errado com sua configuração e você precisará estudar noções básicas de otimização de desempenho:vácuo, análise, parâmetros de custo, uso de memória, ...