Параметр задаёт долю общей таблицы блокировок на процесс, а не предел транзакции. По умолчанию: 64 в PostgreSQL 18 и 128 в PostgreSQL 19; изменение требует перезапуска.
Ошибка
out of shared memory означает нехватку записей блокировок. Перед переходом на PostgreSQL 19 удвойте явно заданное значение: сначала обновите и перезапустите реплики, затем основной сервер, иначе применение журнала на реплике остановится.Занятость:
select count(*) from pg_locks where not fastpath. Расчёты — в статье All Your GUCs in a Row: max_locks_per_transaction.
