Wir verwenden einen Azure PostgreSQL Flexible Server DB für unsere Leistungstests. Bei maximaler Last von etwa 50 tps versagen alle unsere Abfragen mit < /p>
[ERROR: out of shared memory Hint: You might need to increase max_pred_locks_per_transaction.] [n/a].
< /code>
Ich habe die folgende Abfrage ausgeführt, um einige Erkenntnisse zu den Postgres -Sperren zu erhalten. < /p>
SELECT * FROM pg_locks pl LEFT JOIN pg_stat_activity psa
ON pl.pid = psa.pid
left join pg_catalog.pg_class pc
on pl.relation = pc."oid";
< /code>
Ergebnis der obigen Abfrage < /p>
Aus dem obigen Ergebnis beachten Sie, dass die Tabelle pg_locks über 57K+ Datensätze enthält. Das meiste davon hat den Modus als Sireadlock . Außerdem sehe ich auch einige der folgenden Ausnahmen: < /p>
Hibernate transaction: Unable to commit against JDBC Connection; ERROR: could not serialize access due to read/write dependencies among transactions
Detail: Reason code: Canceled on commit attempt with conflict in from prepared pivot.
Hint: The transaction might succeed if retried.
< /code>
Ich möchte das Wurzel dieses Problems verstehen. Ich glaube, dies geschieht, weil langlebige Fragen auf dem Tisch und andere Transaktionen, die darauf warten, dass die Schlösser veröffentlicht werden, auf dem Tisch aufnehmen. Wenn mir jemand helfen könnte, Sireadlocks zu verstehen und warum ich die oben genannten Ausnahmen im Detail bekomme, wäre es wirklich hilfreich. Vielen Dank im Voraus.
Postgres DB löst max_pred_locks_per_transaction überschritten aus ⇐ Java
-
- Similar Topics
- Replies
- Views
- Last post
-
-
Muss ich .Acquire () oder .transaction (), wenn nur Daten in asyncpg abrufen?
by Anonymous » » in Python - 0 Replies
- 1 Views
-
Last post by Anonymous
-