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

Como o PostgreSQL armazena em cache instruções e dados?


Geralmente, apenas o conteúdo dos arquivos de tabela e índice será armazenado em cache no espaço de buffer compartilhado.

Os planos de consulta são armazenados em cache em algumas circunstâncias. A melhor maneira de garantir isso é PREPARAR a consulta uma vez e, em seguida, EXECUTAR todas as vezes.

Os resultados de uma consulta não são armazenados em cache automaticamente. Se você executar novamente a mesma consulta - mesmo que seja idêntica letra por letra e nenhuma atualização tenha sido realizada no banco de dados - ela ainda executará todo o plano. É claro que ele fará uso de quaisquer dados de tabela/índice que já estejam no cache de buffers compartilhados; portanto, não necessariamente terá que ler todos os dados do disco novamente.

Atualização no cache do plano


O cache do plano geralmente é feito por sessão. Isso significa que apenas a conexão que faz o plano pode usar a versão em cache. Outras conexões precisam fazer e usar suas próprias versões em cache. Isso não é realmente um problema de desempenho porque a economia que você obtém ao reutilizar um plano é quase sempre minúscula em comparação com o custo de conexão de qualquer maneira. (A menos que suas consultas sejam realmente complicado.)

Ele faz cache se você usar PREPARE:http://www.postgresql.org /docs/current/static/sql-prepare.html

Ele faz cache quando a consulta está em uma função PL/plSQL:http://www.postgresql.org/docs/current/static/plpgsql-implementation.html#PLPGSQL-PLAN-CACHING

Ele não consultas ad-hoc de cache inseridas no psql.

Espero que alguém possa elaborar outros casos de cache de plano de consulta.