2017-06-05 3 views

Antwort

3

Nein, es wird nicht, es sei denn konkurrierende Transaktion erfordert eine ACCESS EXCLUSIVE Sperre auf dem Tisch (sie laufen so etwas wie DROP TABLE, ALTER TABLE oder CREATE INDEX). Solche Transaktionen würden hängen bleiben, bis die Nur-Lese-Transaktion beendet ist.

Das Problem mit langen Transaktionen besteht darin, dass sie AutoVacuum davon abhalten, ihre Arbeit zu tun, und wenn es eine Menge gleichzeitiger Daten ändern Aktivität gibt, könnten Sie mit aufgeblähten Tabellen und Indizes enden.

+0

Noch eine Frage, müssen alle Zeilen dieser Abfrage alle ihre Version util Transaktionsende oder nur einige Zeilen, die gerade gelesen werden? – jilen

+0

Alle Zeilenversionen, die für einige offene Transaktionen noch gültig sind, werden beibehalten, es sei denn, Sie haben den Parameter ['old_snapshot_threshold'] festgelegt (https://www.postgresql.org/docs/current/static/runtime-config-resource.html # GUC-OLD-SNAPSHOT-THRESHOLD (verfügbar seit 9.6) auf einen anderen Wert als den Standardwert -1. In diesem Fall könnten auch alte Zeilenversionen, die noch benötigt werden, entfernt werden, was zu einem Fehler für die lang laufende Transaktion führen könnte. –

+0

Wird nur Cursor Hilfe AutoVakuum weiterleiten? – jilen

Verwandte Themen