删除视图时运行查询会发生什么?

时间:2014-07-19 10:43:27

标签: sql postgresql concurrency views amazon-redshift

很想知道放弃视图时会发生什么。具体来说,我想知道针对此视图执行的长时间运行查询会发生什么。

长时间运行的查询会在视图删除时失败吗? 视图的计划是否已经在内存中,并且对于长时间运行的查询不需要存在?

我主要对Postgres(& Redshift)如何处理这种情况感兴趣。

1 个答案:

答案 0 :(得分:1)

DROP VIEW必须对视图进行ACCESS EXCLUSIVE锁定。

查询在使用时会对视图进行ACCESS SHARE锁定。 ACCESS EXCLUSIVE与此锁冲突,因此DROP VIEW将阻止,直到长时间运行的查询完成。

试一试,看看,只需打开几个psql个会话。您会发现它可以提供信息,以便检查select * from pg_stat_activity sa inner join pg_locks l on (sa.pid = l.pid)