在postgres中交换生产模式

时间:2017-03-03 19:07:00

标签: database postgresql

我有一个名为current_schema的现有架构。我每隔几小时就收到一份新的第三方数据。我想每隔几个小时更换一次数据,这就是我打算做的事情

1-将新数据写入postgres temp schema
2-将current_schema重命名为current_schema_del
3-将temp重命名为current_schema
4-删除current_schema_del

现在,如果有人在我执行第2步和第3步时尝试访问/修改数据会发生什么?这是正确的方法吗?

1 个答案:

答案 0 :(得分:1)

你的程序应该可以正常工作。

如第2步所示,您也可以立即删除旧架构。

删除将需要架构上的ACCESS EXCLUSIVE锁及其中的所有对象,因此必须等到访问这些对象的所有早期事务都完成。

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

相关问题