Estou tentando descobrir se a relação do Postgres e o cache do catálogo são por conexão ou por servidor? Eu descobri que os caches do plano são por conexão. Faz sentido que o cache exista enquanto o servidor estiver em execução, mas não consigo encontrar nenhuma documentação sobre ele.
relate perguntas
-
Posso ativar o PITR depois que o banco de dados foi usado
-
Práticas recomendadas para executar a replicação atrasada do deslocamento de tempo
-
Os procedimentos armazenados impedem a injeção de SQL?
-
Sequências Biológicas do UniProt no PostgreSQL
-
Qual é a diferença entre a replicação do PostgreSQL 9.0 e o Slony-I?
Esses caches são por conexão. Eles não são mantidos na memória compartilhada.
Ambos.
Todas as relações no PostgreSQL são armazenadas em cache na memória compartilhada até o limite configurado pelo
shared_buffers
parâmetro. Isso inclui também o catálogo do sistema (pg_class
,pg_attribute
, etc).Quando uma sessão está em execução, ela constrói seu próprio cache interno na memória privada para muitas coisas - incluindo planos de consulta, mapeamentos de name-oid etc.
No nível da consulta, você pode revisar o efeito do cache com o comando EXPLAIN - veja esta resposta .
No nível global, você pode inspecionar o conteúdo de buffers compartilhados usando uma extensão padrão chamada
pg_buffercache
.Além disso, se falamos sobre cache, você não pode ignorar o mecanismo de cache do sistema de arquivos O/S. Veja esta excelente apresentação .