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!
postgresql
database-design
performance
Juan Carlos Coto
la source
la source
pgtop
. Vous pouvez également rechercher des lignes indiquant "inactif dans la transaction" dans la sortie deps aux
.pgtop
semble intéressant; existe-t-il un équivalent pour Windows?Réponses:
Si vous voulez voir combien de connexions inactives vous avez qui ont une transaction ouverte, vous pouvez utiliser:
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.
la source
state
colonne n'est présente qu'en 9.2. Et pour moi, il semble que l'état approprié soit «inactif dans les transactions».state = 'idle'
n'indique pas une transaction ouverte.I cannot recreate an open connection in the idle state that has an open transaction.
Ouvrez deux connexions à la base de données et tapez "commencer;" dans une. Dans l'autre, exécutez la requête ci-dessus et vous obtiendrez unidle in transaction
.