Éléments de configuration de PostgreSQL

Le paramètre 'shared_buffers'

Parmi les paramètres les plus déterminants du paramètrage se trouve le shared_buffers défini dans le fichier postgresql.conf.
Avant d'essayer de décrire ce paramètre, il est à noter que PostgreSQL s'intègre particulièrement avec le système d'exploitation qui l'héberge, et notamment avec le système GNU/Linux. Le moteur de la base va utiliser un cache mémoire qu'il se réserve exclusivement, comme la plupart des SGBDR. C'est à ce cache que se réfère le shared_buffers. Mais le moteur va utiliser en plus le cache mémoire de l'OS. Ceci est particulier à PostgreSQL.

Le shared_buffers définit la quantité de mémoire partagée entre les différents processus dépendants du processus postgres. Ce segment de mémoire va servir principalement à dupliquer en mémoire vive certains blocs des objets (tables, indexes, vues matérialisées) depuis les fichiers dans lesquels ils sont stockés. Ces blocs seront choisis selon leur popularité (pg_buffercache.usagecount).

La manière la plus simple et la plus généraliste de définir la valeur du shared_buffers est de lui attribuer 1/4 de la RAM, sans toutefois dépasser une dizaine de Go.


Pour aller plus loin, des tests de performance pourront permettre de déterminer la meilleure valeur du shared_buffers. Une autre solution consistera à installer le module pg_buffercache, ce qui vous permettra d'examiner le contenu du cache de données, par base.

Attention, l'utilisation de pg_buffercache peut être très couteuse en performance en raison des verrous bloquants sur certaines partie du cache.