PostgreSQL - ERROR out of shared memory HINT
- Последнее обновление: 3 Ноября 2023 г.
- Просмотры: 515
- Автор: Админ

Коллеги всем привет.
В сегодняшней статьи мы поговорим о такой ошибке которая может у вас возникнуть в базе данных PostgreSQL, и называется эта ошибка - ERROR: out of shared memory HINT: You might need to increase max_locks_per_transaction. Некоторые из вас уже возможно видели это сообщение об ошибке в PostgreSQL, но решить данную проблему так и не смогли.
Данная проблема на самом деле не такая уж и не понятная, как может показаться на первый взгляд. Эта ошибка означает что у вас не хватает общей памяти. Как мы все уже знаем то что большая часть разделяемой памяти, используемой PostgreSQL, имеет фиксированный размер и за это отвечает параметр shared_buffers.
Общая память используется во многих компонентах базы данных таких как кэш или для ввода вывода, так и для многих других компонентов. Один из этих компонентов базы данных связан с блокировкой. Если вы делаете что-нибудь с таблицей внутри транзакции, то PostgreSQL всегда будет отслеживать ваши действия, чтобы гарантировать, что параллельная транзакция не может удалить таблицу, к которой вы собираетесь обратиться. Отслеживание такой активности очень важно для базы данных, чтобы сохранить её целостность. Проблема заключается в том, что вам нужно где-то хранить эту информацию об отслеживаемой активности, и как раз вся эта активность будет собираться в общей памяти.
На самом деле, чтобы решить данную проблему, вам нужно изменить значения параметра max_locks_per_transaction. max_locks_per_transaction это критический параметр конфигурации базы данных, который необходимо использовать, чтобы избежать такой проблемы. Вам нужно найти этот параметр в главном конфигурационном файле postgresql.conf и увеличить его значения.
По умолчанию параметр max_locks_per_transaction имеет значения 64.
Увеличиваем параметр с 64 до 512.
conf> max_locks_per_transaction = 64
Сохраните файл и обязательно перезапустите базу данных.
Всем спасибо, я надеюсь что вам моя статья хоть чем-то помогла.