Type: integer
Défaut: -1 (-1)
Min: -1 (-1)
Max: 86400 (60d)
Unité: minutes (min)
Contexte: postmaster
Redémarrer: true
Depuis: 9.6

Configure la durée minimale d'utilisation d'une image sans risque d'erreur snapshot too old survenant lors de l'utilisation de l'image. Les données mortes depuis plus longtemps que cette limite peuvent être nettoyées. Ceci peut aider à empêcher la fragmentation dans le cas de snapshots qui restent utiliser sur une longue période. Pour empêcher des résultats incorrects suite au nettoyage des données qui auraient été visibles par l'image, une erreur est générée quand l'image est plus ancienne que cette limite et que l'image est utilisée pour lire un bloc qui a été modifié depuis la construction du snapshot.

Si cette valeur est spécifiée sans unité, elle est considérée comme un nombre de minutes. Une valeur de -1 (valeur par défaut) désactive cette fonctionnalité, en configurant la limite d'âge à l'infini. Ce paramètre peut seulement être configuré au démarrage du serveur.

Les valeurs utiles en production vont probablement d'un petit nombre d'heures à quelques jours. De petites valeurs (tels que 0 ou 1min) sont seulement autorisés parce qu'ils pourraient être utiles pour des tests. Bien qu'une configuration aussi haute que 60d est autorisée, notez que dans de nombreux cas, une fragmentation extrême ou une réutilisation des identifiants de transaction pourrait survenir très rapidement.

Quand cette fonctionnalité est activée, l'espace libérée à la fin de la relation ne peut pas être rendu au système d'exploitation car cela supprimerait les informations nécessaires pour détecter la condition snapshot too old. Tout l'espace alloué pour une relation reste associé avec cette relation pour une réutilisation par cette relation sauf si elle est explicitement libérée (par exemple, avec VACUUM FULL).

Ce paramètre ne tente pas de garantir qu'une erreur sera générée sous quelques circonstances. En fait, si les résultats corrects peuvent être générés à partir (par exemple) d'un curseur qui a matérialisé un ensemble de résultat, aucune erreur ne sera renvoyée même si les lignes impactées dans la table de référence ont été nettoyées. Certaines tables ne peuvent pas être nettoyées tôt proprement, et donc ne seront pas affectées par ce paramètre, comme les catalogues systèmes. Pour ces tables, ce paramètre ne réduira pas la fragmentation et ne pourra être la raison d'une erreur snapshot too old lors de son parcours.

Recommandations [EN]

… or the length of the longest transaction you expect to run + 1 hour.

Commentaires