系统允许的总锁数
SELECT
(SELECT setting::int FROM pg_settings WHERE name = 'max_locks_per_transaction') *
(SELECT setting::int FROM pg_settings WHERE name = 'max_connections') +
(SELECT setting::int FROM pg_settings WHERE name = 'max_prepared_transactions');
当锁大于上述数据
dynadot=# SELECT
count( pid)
FROM
pg_locks ;
count
-------
563
(1 row)
就会出现
ERROR: out of shared memory
一般是调大max_locks_per_transaction
参考下方的官方文档。
大多数会出现在“查询一个有很多子表的父表”这种情况,会有大量的锁。所以此时会报错。

486

被折叠的 条评论
为什么被折叠?



