Téléchargement du traqueur pour PostgreSQL 12, 13, 14, 15, 16
Téléchargement du traqueur pour PostgreSQL 11
Téléchargement du traqueur pour PostgreSQL 10
Téléchargement du traqueur pour PostgreSQL 9.6
Téléchargement du traqueur pour PostgreSQL 9.5
Téléchargement du traqueur pour PostgreSQL 9.4
Téléchargement du traqueur pour PostgreSQL 9.3
Journal des changements
Signalement de bugs via le forum
Licence identique à celle de PostgreSQL, open source type BSD
Dossier des versions
Dans cet article concernant les problèmes de verrouillage, certaines transactions étaient bloquées par d'autres transactions qui, elles, n'étaient bloquées par aucune transaction. L'information concernant les sessions comprenant les transactions bloquantes finales était donnée via un tableau d'entiers, chaque entier étant le numéro du processus serveur (PID) de la session.
Parfois, cependant, ce ne sont pas des transactions liées à des sessions qui bloquent et le PID n'est plus pertinent.
Démonstration avec PostgreSQL 10 beta :
Les sessions D et E étaient bloquées par 3 coupables, la session A (process serveur 12459) et les transactions préparées patanok et nouka. Le traqueur indique dans ce cas le ou les identifants des process bloquants et, depuis la 0.10.03, un 0 si une ou plusieurs transactions préparées sont bloquantes.
Lorsqu'une transaction est préparée, elle est enregistrée sur disque, prête à être validée et n'est plus reliée à une session. Terminer la session d'origine, volontairement ou en tuant le processus, ne libère donc pas les verrous de la transaction préparée et ne résout pas le problème de blocage.
Si une telle situation se présente avec des transactions préparées orphelines au sens applicatif, il convient pour le DBA de les annuler ou de les valider afin de débloquer la situation. Interroger pg_locks et réaliser une jointure avec pg_prepared_xacts sur le numéro de transaction permet de cibler les transactions préparées bloquantes.
Afin de faciliter la recherche et la prise de décision concernant les bloqueurs finaux, une future version du traqueur donnera peut-être des informations complémentaires sur ces bloqueurs via une colonne supplémentaire, que les bloqueurs soient des transactions habituelles liées à une session ou des transactions préparées.