如何在生产 postgres 数据库中以最短的停机时间重命名表?

Rag*_*esh 8 postgresql ddl online-operations

据我所知,在 postgres 中重命名表可以归结为简单的目录更新。然而,它也需要ACCESS EXCLUSIVE锁来确保交易的安全。

在生产中的活动表上执行此操作的理想方法是什么?alter table foo rename to bar在 DDL 获得其独占锁之前,天真的调用不会最终阻塞新的事务吗?

多次尝试set lock_timeout TO '1s'DDL 直到成功是更好的策略吗?或者我应该硬着头皮让我的系统离线一两分钟然后结束它?