postgres - monitorowanie transakcji

0

Hej. Powiedzmy, że istnieje taka prosta sytuacja:

CREATE TABLE mytab
(
  class int NOT NULL,
  value int NOT NULL
);
INSERT INTO mytab VALUES
(1, 10), (1, 20), (2, 100), (2, 200);

Zaczyna się transakcja A:

BEGIN;
SELECT SUM(value) FROM mytab WHERE class = 1;
INSERT INTO mytab VALUES (2, 30);

w międzyczasie wchodzi mała szybka transakcja B:

BEGIN;
SELECT SUM(value) FROM mytab WHERE class = 2;
INSERT INTO mytab VALUES (1, 300);
COMMIT;

^-- ta transakcja przechodzi

kończymy transakcje A:

COMMIT;

kończy się spodziewanym błędem could not serialize access due to read/write among transactions .... itd

jakie monitory zapuszczacie na takie sytuacje (aby ustalić dlaczego A się zblokowała) ?
Wykorzystujecie logi postgresa? - (logujecie sobie zapytania od razu z id transakcji <- aby pogrupować per transakcja ? )
Własne skrypty korzystające z widoków pg_stat_*, pg_locks itd... ?
macie lepsze narzędzia ?

0

user image

1 użytkowników online, w tym zalogowanych: 0, gości: 1