类型: | integer |
默认: | 64 |
最低限度: | 10 |
最大: | 2147483647 |
上下文: | postmaster |
重新开始: | true |
共享锁表跟踪在max_locks_per_transaction
* (max_connections + max_prepared_transactions) 个对象(如表)上的锁。因此,在任何一个时刻,只有不超过这么多个可区分对象能够被锁住。这个参数控制为每个事务分配的对象锁的平均数量。个体事务可以锁住更多对象,数量可以和锁表中能容纳的所有事务的锁一样多。这不是能被锁住的行数,那个值是没有限制的。默认值 64 已经被历史证明是足够的,但是如果你有需要在一个事务中使用很多不同表的查询(例如查询一个有很多子表的父表),你可能需要提高这个值。这个参数只能在服务器启动时设置。
当运行一个后备服务器时,你必须设置这个参数为大于等于主服务器上的值。否则,后备服务器上将不允许查询。
建议 [EN]
Some databases with very complex schema or with many long-running tranactions need a higher amount. This is rare though.
在 StackOverflow
在 pgsql-hackers
- Re: allow changing autovacuum_max_workers without restarting
- Re: Fix the description of GUC "max_locks_per_transaction" and "max_pred_locks_per_transaction" in guc_table.c
- Re: scalability bottlenecks with (many) partitions (and more)
- Re: partitioning and identity column
- Re: pg_upgrade failing for 200+ million Large Objects