RDS Postgresql 12.12
CREATE INDEX CONCURRENTLY idx_foo ON foo (f1, f2, f3);被只涉及表bar和baz的存储过程阻塞。
BEGIN和START TRANSACTION似乎没有一个子句,它只允许一个人指定事务中触及的表。我是不是遗漏了什么?
发布于 2023-03-03 07:23:31
我认为您有一种误解,即PostgreSQL锁定与活动事务无关的表。情况并非如此。如果事务对表foo具有锁,则事务中的一条语句确实会影响表foo。
注意,语句可以影响语句中没有提到的表。一种可能是在您修改的表上设置触发器:触发器函数中的语句可以修改其他表。另一个例子是由外键约束引起的级联删除。
我建议您保持事务简短,这样锁就不会有什么问题了。
没有办法告诉PostgreSQL不要锁定事务中使用的表或被修改的列。这将导致数据库中的不一致。
https://dba.stackexchange.com/questions/324315
复制相似问题