PostgreSQL - ERROR out of shared memory HINT

  • Останнє оновлення: 3 Квітня 2024 р.
  • Перегляди: 26
  • Автор: Адмін
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_transaction . max_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 додати файл конфігурації - include_if_exists
Postgresql - Автоматичний запуск бази даних