X Z
Коллеги, доброго времени.
Вероятно в этом чате есть гуру и эксперты,
которые помогут подсказать направление куда копать, в какую сторону,
заранее спасибо!
Получаем вот такую ошибку:
org.postgresql.util.PSQLException: ERROR: out of memory
Подробности: Failed on request of size 8 in memory context "Subplan HashTable Temp Context".
В одной из сессий происходит выполнение составного запроса типа select столбцы, а также подселекты с count(*) как виртуальные столбцы из связки представлений и таблиц с условиями,
в условиях есть сравнение значений в подселектами с count(*).
При этом Postgres ( этот процесс ) съедает всю память на сервере (до 32 GB) и ввиду этого отстреливает всех пользователей с ошибкой:
[i]WARNING: terminating connection because of crash of another server process
The postmaster has commanded this server process to roll back the current transaction and exit, because another server process exited abnormally and possibly corrupted shared memory.
Детали, если важны:
1. Запрос выполняется успешно практически всегда без последствий, исключение до 10% - оно печальное, как описано выше.
2. Редакция PostgreSQL — свободная, версии 12.3
3. Платформа Windows 2008/2016
4. Данных в связке из представлений и таблиц в строках не так много, не если учитывать условия, то 300 000, 180 000, 3 000 000, и 50 строк, если с условиями – результат до 5000 строк
Вопрос - как лечить такую ошибку?
Спасибо,
P.S. в дополнительной информации о данных ограничены со стороны информационной безопасности.
А какой стоит work_mem? Ну и план запроса не плохо бы посмотреть (explain analyze). Возможно провирается стаистикиа и в результате в hash join прилетает гораздо больше, чем ожидалось