O estado dos documentos de consumo de recursos do Postgres , em shared_buffers
:
...é improvável que uma alocação de mais de 40% de RAM para shared_buffers funcione melhor do que uma quantidade menor.
Por que é isso? Sempre me disseram que quanto mais RAM um servidor tiver, melhor será o desempenho do Postgres. Não é shared_buffers
a configuração de memória por excelência para Postgres? Se estou alocando apenas 3 GB de 12 GB (o ponto de partida recomendado de 25%) em meu servidor para shared_buffers
, onde posso esperar que o Postgres aproveite pelo menos 6 GB a mais?
Na verdade,
effective_cache_size
acoplado comshared_buffers
poderia ser considerado mais apropriadamente como as configurações de memória por excelência. Mantershared_buffers
um pouco mais baixo (por exemplo, 25%) é útil porque o Postgres também depende dos caches do sistema operacional, o que pode ser responsável pela utilização de alguns dos outros "6 GB" de RAM no OP.De acordo com a página oficial de "ajuste" do Postgres , definir
effective_cache_size
a metade da memória total é considerado conservador. No entanto, esta não é uma alocação de memória, e sim uma diretriz para ajudar o Postgres a planejar suas consultas com base no que está disponível para ele.Observe também que subestimar os recursos do Postgres em um pequeno grau pode ser útil, permitindo algum espaço para respirar no futuro. Imagine que seu servidor Postgres foi otimizado para aproveitar 100% de todos os recursos físicos de sua máquina e, então, você atingiu o limite do seu servidor. Haveria pouco que você poderia fazer neste ponto para evitar o desastre (por exemplo, troca, degradação extrema do desempenho, etc.), portanto, deixar um pouco de espaço de manobra pode ser útil quando você precisa de uma semana para atualizar seu servidor.