La durabilité est une fonctionnalité des serveurs de bases de données permettant de garantir l'enregistrement des transactions validées même si le serveur s'arrête brutalement, par exemple en cas de coupure électrique. Néanmoins, la durabilité ajoute une surcharge significative. Si votre base de données n'a pas besoin de cette garantie, PostgreSQL peut être configuré pour fonctionner bien plus rapidement. Voici des modifications de configuration que vous pouvez faire pour améliorer les performances dans ce cas. Sauf indication contraire, la durabilité des transactions est garantie dans le cas d'un crash du serveur de bases de données ; seul un arrêt brutal du système d'exploitation crée un risque de perte de données ou de corruption quand ces paramètres sont utilisés.
Placer le répertoire des données dans un système de fichiers en mémoire (par exemple un disque RAM). Ceci élimine toutes les entrées/sorties disque de la base de données. Cela limite aussi la quantité de mémoire disponible (et peut-être aussi du swap).
Désactiver fsync ; il n'est pas nécessaire d'écrire les données sur disque.
Désactiver synchronous_commit ; il n'est pas forcément nécessaire d'écrire les journaux de transactions WAL à chaque validation de transaction. Ce paramètre engendre un risque de perte de transactions (mais pas de corruption de données) dans le cas d'un arrêt brutal de la base de données.
Désactiver full_page_writes ; il n'est pas nécessaire de se prémunir contre les écritures de pages partielles.
Augmenter max_wal_size et checkpoint_timeout ; cela réduit les fréquences
des CHECKPOINT, mais augmente l'espace disque nécessaire dans
pg_wal
.
Créer des tables non journalisées pour éviter des écritures dans les WAL, bien que cela rende les tables non résistantes à un arrêt brutal.