针对 PostgreSQL 中的视图发出 DDL 是否与针对表发出 DDL 取出相同的锁?

foo*_*100 6 postgresql view ddl locking

我知道视图是使用规则系统实现的,但我不清楚在针对它们运行事务性 DDL 时这是否有任何优点/缺点。发出CREATE OR REPLACE VIEW ...;DROP VIEW ...; CREATE VIEW...;在事务中是否会针对表取出类似于 DDLACCESS EXCLUSIVE锁?所有在 DDL 之前发出的查询都必须在 DDL 执行之前完成吗?查询会在 DDL 阻塞后发出,直到 DDL 完成吗?

Sah*_*sci 0

您的三个问题的直接答案是:

  1. 是的,它确实。当您替换视图时,视图对象的锁将为AccessExclusiveLock

  2. 是的,即使使用该特定视图的“选择”查询也会等待,直到提交“创建或替换”语句。

  3. 是的,他们确实这么做了。提交“视图更改器”查询后,等待的查询将启动