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

Wie verhält sich pgbouncer, wenn das Transaktionspooling aktiviert ist und eine einzelne Anweisung ausgegeben wird?

https://pgbouncer.github.io/usage.html

https://pgbouncer.github.io/config.html#description

Wenn die Transaktion in Ihrem Fall nie beendet wird (festgeschrieben, zurückgesetzt), wird sie idle_transaction_timeout treffen (standardmäßig deaktiviert) und idle in transaction Die Verbindung geht zurück zum Pool, sodass andere sich verbinden können. Wenn Sie den Standardwert dafür haben, sind irgendwann alle Verbindungspools gefüllt, sodass neue abgelehnt werden. Von diesem Punkt an werden Ihre einzelnen Anweisungen nicht mehr funktionieren - sie werden auf eine freie Verbindung warten, die nie erscheint.

In Bezug auf einzelne Anweisungen - sie werden weder "von pgbounce in Transaktionen umgewandelt" noch "im Transaktionspooling ist jeder Befehl eine Transaktion für sich". Dies wird durch AUTOCOMMIT gesteuert für jede Sitzung.