Laut einem Kommentar zu dieser Frage, den ich zu inaktiven Verbindungen in PostgreSQL 9.2 gestellt habe , können einige nicht festgeschriebene Transaktionen (möglicherweise im Zusammenhang mit einigen dieser inaktiven Verbindungen) einige Leistungsprobleme verursachen.
Was ist eine gute Methode, um festzustellen, ob nicht festgeschriebene Transaktionen vorliegen (Bonuspunkte, wenn festgestellt werden kann, ob die Verbindung, mit der sie verbunden sind, inaktiv ist oder nicht)?
Vielen Dank!
postgresql
database-design
performance
Juan Carlos Coto
quelle
quelle
pgtop
. Sie können auch nach Zeilen suchen, die in der Ausgabe von "Leerlauf in Transaktion" anzeigenps aux
.pgtop
sieht interessant aus; Gibt es eine Entsprechung für Windows?Antworten:
Wenn Sie sehen möchten, wie viele inaktive Verbindungen Sie haben, für die eine Transaktion offen ist, können Sie Folgendes verwenden:
Daraufhin wird eine Liste der offenen Verbindungen angezeigt, die sich im Ruhezustand befinden und über eine offene Transaktion verfügen.
Allerdings kann ich im Ruhezustand, in dem eine Transaktion offen ist, keine offene Verbindung wiederherstellen. Vielleicht kann jemand anderes Einzelheiten dazu liefern.
quelle
state
Spalte nur in 9.2 vorhanden ist. Und für mich sieht es so aus, als wäre der richtige Zustand "in der Transaktion im Leerlauf".state = 'idle'
weist nicht auf eine offene Transaktion hin.I cannot recreate an open connection in the idle state that has an open transaction.
Öffnen Sie zwei Verbindungen zur Datenbank und geben Sie "begin" ein. in Eins. In der anderen führen Sie die obige Abfrage aus, und Sie haben eineidle in transaction
.