web-dev-qa-db-fra.com

Comment déterminer s'il existe des [connexions inactives avec] des transactions non validées dans PostgreSQL?

Selon un commentaire sur cette question que j'ai posée sur les connexions inactives dans PostgreSQL 9.2 , certaines transactions non validées (éventuellement liées à certaines de ces connexions inactives) peuvent entraîner des problèmes de performances.

Quelle est la bonne façon de déterminer s'il y a des transactions non engagées (des points bonus s'il y a un moyen de savoir si la connexion sur laquelle ils sont connectés est inactive ou non)?

Merci beaucoup!

26
Juan Carlos Coto

Si vous voulez voir combien de connexions inactives vous avez qui ont une transaction ouverte, vous pouvez utiliser:

select * 
from pg_stat_activity
where (state = 'idle in transaction')
    and xact_start is not null;

Cela fournira une liste des connexions ouvertes qui sont à l'état inactif, qui ont également une transaction ouverte.

Cela dit, je ne peux pas recréer une connexion ouverte à l'état inactif qui a une transaction ouverte. Peut-être que quelqu'un d'autre peut fournir des détails sur la façon de procéder.

17
Max Vernon