Améliorer les performances de PostgreSQL

PostgreSQL est peut-être la plus avancée des base de données Libres, cela n’en fait pas forcément la plus performante. La bonne nouvelle, c’est qu’il est largement possible d’améliorer les choses.

Insertion de données.

Par défaut, PostgreSQL est synchrone avec ces fichiers. Ce qui signifie que pour chaque INSERT, l’enregistrement est synchronisé sur le disque avant que le prochain enregistrement soit accepté.

Dans le fichier postgresql.conf

fsync = on                              # flush data to disk for crash safety
                                        # (turning this off can cause
                                        # unrecoverable data corruption)

Changez on par off et relancez PostgreSQL.

Les performances à l’insertion sont plusieurs fois plus rapides ainsi, par contre cela signifie qu’en cas de coupure de courant au milieu d’un batch d’insertion, vous pouvez vous retrouver avec une base de données corrompue.

Les shared buffers

Sur les distributions standards ou sur les instances du cloud, cette valeur est bien souvent bien trop conservatrice.

Dans le fichier postgresql.conf

shared_buffers = 128MB                  # min 128kB
                                        # (change requires restart)

Sur un serveur, cette valeur devrait être à 25% de la mémoire disponible.

index suite…