在Postgres中交换生产模式

4
我有一个名为current_schema的现有架构。我每隔几个小时就会收到新的第三方数据。 我想每隔几个小时替换它的数据,这是我的计划:
1- 将新鲜数据写入postgres临时模式 2- 将current_schema重命名为current_schema_del 3- 将temp重命名为current_schema 4- 删除current_schema_del
现在,如果有人在执行第2和第3步时尝试访问/修改数据,会发生什么? 这样做对吗?
1个回答

3

您的操作应该没有问题。

步骤2,您也可以立即删除旧模式。

删除需要对模式及其中所有对象进行ACCESS EXCLUSIVE锁定,因此必须等待访问这些对象的所有较早事务完成。

一种选择是使用一个函数(具有SECURITY DEFINER且由超级用户拥有),杀死所有访问此类对象的事务,这样您就不必等待长时间运行的事务结束。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接