据我所知,在 postgres 中重命名表可以归结为简单的目录更新。然而,它也需要ACCESS EXCLUSIVE锁来确保交易的安全。
ACCESS EXCLUSIVE
在生产中的活动表上执行此操作的理想方法是什么?alter table foo rename to bar在 DDL 获得其独占锁之前,天真的调用不会最终阻塞新的事务吗?
alter table foo rename to bar
多次尝试set lock_timeout TO '1s'DDL 直到成功是更好的策略吗?或者我应该硬着头皮让我的系统离线一两分钟然后结束它?
set lock_timeout TO '1s'
postgresql ddl online-operations
ddl ×1
online-operations ×1
postgresql ×1