PostgreSQL - ERROR out of shared memory HINT
- Останнє оновлення: 3 Листопада 2023 р.
- Перегляди: 124
- Автор: Адмін

Колеги всім привіт.
У сьогоднішній статті ми поговоримо про таку помилку, яка може у вас виникнути в базі даних 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
Збережіть файл та обов'язково перезапустіть базу даних.
Дякую всім, я сподіваюся що вам моя стаття хоч чимось допомогла.