Type: integer
Défaut: 0
Min: 0
Max: 100000
Contexte: superuser
Redémarrer: false

Configurer commit_delay ajoute un délai avant qu'un vidage du journal de transactions ne soit effectué. Ceci peut améliorer les performances de la validation en groupe en permettant la validation d'un grand nombre transactions en un seul vidage des journaux, si la charge système est suffisamment importante pour que des transactions supplémentaires soient prêt ç être valider dans le même intervalle. Néanmoins, cela augmente aussi la latence jusqu'à la valeur de commit_delay pour chaque vidage de journaux. Comme le délai est perdu si aucune autre transaction n'est prête à être validée, un délai n'est respecté que si au moins commit_siblings autres transactions sont actives quand un vidage doit être initié. De plus, aucun délai ne sera pris en compte si fsync est désactivé. Si cette valeur est indiquée sans unité, elle est considérée comme un nombre de microsecondes. La valeur par défaut de commit_delay est zéro (aucun délai). Seuls les superutilisateurs peuvent modifier cette configuration.

Dans les versions de PostgreSQL antérieures à la 9.3, commit_delay se comportait différemment et était bien moins efficace : il n'affectait que les validations plutôt que les vidages de journaux et attendait que le délai complet soit passé même si le vidage du journal était terminé avant. À partir de PostgreSQL 9.3, le premier processus prêt à vider le journal attend pendant l'intervalle configuré alors que les autres processus attendent que le premier termine l'opération de vidage.

Recommandations [EN]

A primitive form of group commit without asynchronicity. Performance testing of this is very mixed; only set to non-zero if you have time to test the specific performance impact on your workload. Reasonable values are 200 to 1000.

Commentaires