Postgres DB бросает MAX_PRED_LOCKS_PER_TRANSACTIONJAVA

Программисты JAVA общаются здесь
Anonymous
Postgres DB бросает MAX_PRED_LOCKS_PER_TRANSACTION

Сообщение Anonymous »

Мы используем гибкий сервер Azure PostgreSQL для проведения нашего тестирования производительности. При максимальной нагрузке около 50 TPS все наши запросы проваливаются с < /p>
[ERROR: out of shared memory Hint: You might need to increase max_pred_locks_per_transaction.] [n/a].
< /code>
Я выполнил следующий запрос, чтобы получить некоторое представление о замках Postgres. < /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>
Результат вышеуказанного запроса < /p>
Из приведенного выше результата обратите внимание, что таблица PG_LOCKS имеет более 57 тыс.+ Записи. Большая часть его имеет режим как sireadlock .
Наша кодовая база имеет много сложных запросов с несколькими соединениями (не написано оптимальным образом). Кроме того, я тоже вижу некоторые из следующих исключений: < /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>
Я хочу понять корень этой проблемы. Я полагаю, что это происходит из -за давних запросов, которые занимают замки на столе и другие транзакции, ожидающие выпуска замков. Если кто -то мог бы помочь мне понять Sireadlocks и почему я подробно получаю вышеупомянутые исключения, это было бы действительно полезно. Заранее спасибо.

Подробнее здесь: https://stackoverflow.com/questions/794 ... n-exceeded

Вернуться в «JAVA»