PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

So führen Sie mehrere Transaktionen gleichzeitig in PostgreSQL aus

Öffnen Sie mehr als ein psql Sitzung, ein Terminal pro Sitzung.

Wenn Sie Windows verwenden, können Sie dies tun, indem Sie psql starten mehrmals über das Startmenü. Öffnen Sie auf anderen Plattformen ein paar neue Terminals oder Terminal-Tabs und starten Sie psql in jedem.

Ich mache das routinemäßig, wenn ich Probleme mit Sperren und Parallelität untersuche, die in Antworten wie verwendet werden:

... wahrscheinlich mehr. Ein nützlicher Trick, wenn Sie eine Racebedingung einrichten möchten, besteht darin, ein drittes psql zu öffnen Sitzung und BEGIN; LOCK TABLE the_table_to_race_on; . Führen Sie dann Anweisungen in Ihren anderen Sitzungen aus; Sie werden auf dem Schloss blockieren. ROLLBACK Die Transaktion, die die Tabellensperre hält, und die anderen Sitzungen laufen um die Wette. Es ist nicht perfekt, da es keine Offset-Startzeit-Parallelität simuliert, aber es ist immer noch sehr hilfreich.

Andere Alternativen werden in dieser späteren Antwort beschrieben zu einem ähnlichen Thema.