我们有一个应用程序,由Postgres支持暂时锁定。 Postgres日志显示了pg_database
的一系列AccessExclusiveLock条目:
[13-1] sql_error_code = 00000 LOG: process 7045 still waiting for AccessExclusiveLock on object 0 of class 1262 of database 0 after 1000.123 ms
[6-1] sql_error_code = 00000 LOG: process 7132 still waiting for AccessExclusiveLock on object 0 of class 1262 of database 0 after 1000.118 ms
[6-1] sql_error_code = 00000 LOG: process 8824 still waiting for AccessExclusiveLock on object 0 of class 1262 of database 0 after 1000.133 ms
[14-1] sql_error_code = 00000 LOG: process 7045 acquired AccessExclusiveLock on object 0 of class 1262 of database 0 after 39265.319 ms
[7-1] sql_error_code = 00000 LOG: process 7132 acquired AccessExclusiveLock on object 0 of class 1262 of database 0 after 12824.407 ms
[7-1] sql_error_code = 00000 LOG: process 8824 acquired AccessExclusiveLock on object 0 of class 1262 of database 0 after 6362.509 ms
1262这里指的是pg_database
:
=> select 1262::regclass;
+-------------+
| regclass |
+-------------+
| pg_database |
+-------------+
我们在Heroku上运行Postgres 9.6.5。
根据我的理解,AEL将用于“重”操作,例如DROP TABLE,TRUNCATE,REINDEX [1] ......我们的运行时操作由许多存储过程组成,每个存储过程都插入/更新/删除多个表(删除更少)。我们不会在运行时执行上面列出的任何操作,也不会在链接文档中执行任何操作,此时没有发布/维护(由我们)。
我还没有设法找到任何文档,说明在上面概述的“正常操作”期间何时可以进行此锁定。我的问题是: