org.postgresql.util.PSQLException: ОШИБКА: недостаточно общей памяти - PullRequest
0 голосов
/ 03 октября 2011

Я вызываю функцию, имеющую более 200 операторов таблицы DROP, используя JAVA, и получаю org.postgresql.util.PSQLException: ОШИБКА: из общей памяти.Какой подход я должен использовать, чтобы избежать использования общей памяти?

PS: ограничение заключается в том, что я не могу изменить какие-либо параметры, связанные с PostgresSQL.

1 Ответ

1 голос
/ 03 октября 2011

Если причина ошибки на стороне сервера: в PostgreSQL функция всегда выполняется внутри транзакции.DO блоки являются анонимными функциями и обрабатываются одинаково.И поскольку даже команды DML, такие как CREATE или DROP, являются транзакционными в PostgreSQL, эти команды также подчеркивают обычные ресурсы, используемые для ROLLBACK и COMMIT.

Я предполагаю, что отбрасывание огромного количества больших таблиц приводит к большому объему памяти.Поэтому, если вам не нужно транзакционное поведение в вашей функции, самый простой способ - разделить большую функцию на несколько более мелких.Вызовите каждую функцию в отдельной транзакции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...