PostgreSQL - ERROR out of shared memory HINT

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

Коллеги всем привет.

В сегодняшней статьи мы поговорим о такой ошибке которая может у вас возникнуть в базе данных PostgreSQL, и называется эта ошибка - ERROR: out of shared memory HINT: You might need to increase max_locks_per_transaction. Некоторые из вас уже возможно видели это сообщение об ошибке в PostgreSQL, но решить данную проблему так и не смогли.

Данная проблема на самом деле не такая уж и не понятная, как может показаться на первый взгляд. Эта ошибка означает что у вас не хватает общей памяти. Как мы все уже знаем то что большая часть разделяемой памяти, используемой PostgreSQL, имеет фиксированный размер и за это отвечает параметр shared_buffers.

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

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

По умолчанию параметр max_locks_per_transaction имеет значения 64.

 

max_locks_per_transaction

 

Увеличиваем параметр с 64 до 512.

conf> max_locks_per_transaction = 64

max_locks_per_transaction

Сохраните файл и обязательно перезапустите базу данных.


 

Всем спасибо, я надеюсь что вам моя статья хоть чем-то помогла.

ПОХОЖИЕ СТАТЬИ

PostgreSQL как установить часовый пояс Time Zone
Postgresql - Список пользователей
Скачать и установить Postgresql 14 на Linux CentOS/RHEL 8/7 TAR