Postgres - размер временного файла превышает temp_file_limit - PullRequest
0 голосов
/ 30 ноября 2018

Я попытался выполнить запрос на чтение всех (выберите * из tblName) с помощью курсоров JDBC (setFetchSize).Свойство temp_file_limit в postgresql.conf составляет 500 КБ.Когда я выполняю подготовленный оператор, я получаю исключение psql -

org.postgresql.util.PSQLException: ОШИБКА: размер временного файла превышает temp_file_limit (500 КБ)

документация в PostgreSQL.conf гласит: «# ограничивает пространство временных файловых сессий».https://jdbc.postgresql.org/documentation/head/query.html#query-with-cursor согласно этой ссылке, соединение должно быть отключено автоматическое принятие, и я не отключил его.Я так и сделал, но в итоге столкнулся с той же проблемой.Насколько я понимаю, такие большие операции чтения записываются во временный файл перед загрузкой в ​​набор результатов.Если это так, то с низким значением temp_file_limit я никогда не смогу читать очень большие данные, даже с курсором.Это не имеет смысла, почему он сделан настраиваемым в первую очередь.

Установка значения temp_file_limit -1 (неограниченный размер файла) решила эту проблему для меня.Правильно ли я придерживаюсь этого подхода?

1 Ответ

0 голосов
/ 30 ноября 2018

Я видел запросы, которые занимали бы много места (иногда более 1 ТБ), продолжали работать, пока все свободное пространство не использовалось, и другие запросы не начали падать.Установка этого значения, скажем, разумного (в нашем случае) 100 ГБ защитит другие сеансы.

Установка его на 500 КБ кажется действительно бессмысленной.

Временные файлы FYI используются не только для курсоров.

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