PostgreSQL ALTER TABLE 需要 35 分钟
PostgreSQL ALTER TABLE takes 35 minutes
ALTER TABLE table1 ADD COLUMN category_id integer
我已经在服务器负载的情况下在生产环境中执行了这个查询。根据datadog用了35分钟
这个 table1
有大约 1 亿行。
35分钟正常吗?有什么办法可以在不锁定 table?
的情况下执行这种简单的迁移(添加可为空的列)
这个命令只需要一瞬间。
您必须花费 35 分钟等待 table 上的 ACCESS EXCLUSIVE
锁被授予(同时阻止任何不幸排在您后面的事务)。
您可能对长事务有疑问。通常它们应该尽可能短,否则它们会长时间持有锁,并且还会使 VACUUM
无法清理死行版本。
锁是必需的,但不应该对行为良好的数据库工作负载造成问题。
ALTER TABLE table1 ADD COLUMN category_id integer
我已经在服务器负载的情况下在生产环境中执行了这个查询。根据datadog用了35分钟
这个 table1
有大约 1 亿行。
35分钟正常吗?有什么办法可以在不锁定 table?
的情况下执行这种简单的迁移(添加可为空的列)这个命令只需要一瞬间。
您必须花费 35 分钟等待 table 上的 ACCESS EXCLUSIVE
锁被授予(同时阻止任何不幸排在您后面的事务)。
您可能对长事务有疑问。通常它们应该尽可能短,否则它们会长时间持有锁,并且还会使 VACUUM
无法清理死行版本。
锁是必需的,但不应该对行为良好的数据库工作负载造成问题。