deadlock_timeout
(integer
) #这是在检查是否存在死锁条件之前等待锁的时间。检查死锁的代价相对较高,因此服务器不会在每次等待锁时都运行它。我们乐观地假设死锁在生产应用程序中不常见,并且在检查死锁之前只等待锁一段时间。增加此值会减少在不必要的死锁检查中浪费的时间,但会减慢实际死锁错误的报告速度。如果指定此值时没有单位,则将其视为毫秒。默认值为一秒 (1s
),这可能是在实践中您想要的最小值。在负载较重的服务器上,您可能需要提高它。理想情况下,此设置应超过您的典型事务时间,以便提高在等待者决定检查死锁之前释放锁的可能性。只有超级用户和具有适当 SET
权限的用户才能更改此设置。
当设置了 log_lock_waits 时,此参数还决定了发出关于锁等待的日志消息之前等待的时间。如果您正在尝试调查锁延迟,您可能需要设置一个比正常 deadlock_timeout
短的值。
max_locks_per_transaction
(integer
) #每个服务器进程或准备好的事务的共享锁表有空间容纳 max_locks_per_transaction
个对象(例如,表);因此,在任何一次最多可以锁定这么多不同的对象。此参数限制每个事务使用的平均对象锁数量;只要所有事务的锁都适合锁表,单个事务可以锁定更多对象。这不是可以锁定的行数;该值没有限制。默认值 64 历史上已被证明足够,但如果您有在单个事务中访问许多不同表的查询,例如,查询具有许多子表的父表,您可能需要提高此值。此参数只能在服务器启动时设置。
在运行备用服务器时,您必须将此参数设置为与主服务器相同或更高的值。否则,将不允许在备用服务器中执行查询。
max_pred_locks_per_transaction
(integer
) #每个服务器进程或准备好的事务的共享谓词锁表有空间容纳 max_pred_locks_per_transaction
个对象(例如,表);因此,在任何一次最多可以锁定这么多不同的对象。此参数限制每个事务使用的平均对象锁数量;只要所有事务的锁都适合锁表,单个事务可以锁定更多对象。这不是可以锁定的行数;该值没有限制。默认值 64 历史上已被证明足够,但如果您有在单个可序列化事务中访问许多不同表的客户端,您可能需要提高此值。此参数只能在服务器启动时设置。
max_pred_locks_per_relation
(integer
) #这控制在将锁升级为覆盖整个关系之前,单个关系的多少页或元组可以被谓词锁定。大于或等于零的值表示绝对限制,而负值表示 max_pred_locks_per_transaction 除以该设置的绝对值。默认值为 -2,这保留了以前版本的 PostgreSQL 的行为。此参数只能在 postgresql.conf
文件中或在服务器命令行中设置。
max_pred_locks_per_page
(integer
) #这控制在将锁升级为覆盖整个页面之前,单个页面上的多少行可以被谓词锁定。默认值为 2。此参数只能在 postgresql.conf
文件中或在服务器命令行中设置。
如果您在文档中发现任何不正确、与您特定功能体验不符或需要进一步澄清的内容,请使用此表单报告文档问题。