7.4.全局DDL锁监控
全局的 DDL 锁,用于 DDL 复制,可以取消和/或阻止并行写入和其他 DDL。所以它可以是重要的是确定究竟什么占用的锁,还是认为它仍在试图获得它,和多长时间它一直试图或已经持有该锁。
可以使用 bdr.trace_ddl_locks_level 设置使用 PostgreSQL 的日志文件, 提供了最完整和最有用的方式来看 DDL 锁定活动追踪 DDL 锁定活动。 强烈建议您启用 DDL 锁跟踪。
bdr.bdr_global_locks 目录还提供一些可视性 DDL 锁定状态。 当 DDL 锁时,该节点包含 DDL 锁不会任何行在此表中。 其他节点将都像单排条目︰
bdr_testdb=# select * from bdr.bdr_global_locks ;
locktype | owning_sysid | owning_timeline | owning_datid | owner_created_lock_at | acquired_sysid | acquired_timeline | acquired_datid | acquired_lock_at | state
----------+---------------------+-----------------+--------------+-----------------------+---------------------+-------------------+----------------+------------------+----------
ddl_lock | 6313760379784308337 | 1 | 16385 | 1DC11/2CEB874C | 6313760193895071967 | 1 | 16385 | | acquired
(1 row)
这表明存在持有锁或试图获取锁的节点。
全局DDL锁的工作原理,请参阅章节8.1.1 可以了解更多细节。