【发布时间】:2012-12-08 11:35:29
【问题描述】:
我有一个 postgresql 数据库和一个包含近十亿行的表。 当我尝试添加具有默认值的新列时:
ALTER TABLE big_table
ADD COLUMN some_flag integer NOT NULL DEFAULT 0;
事务持续了 30 多分钟......并且数据库日志开始发出警告。
有什么方法可以优化查询?
【问题讨论】:
-
您在日志文件中看到了哪些警告?
-
您可以使用其数据创建表的副本,将列添加到其中,然后通过重命名两个表来交换它们。 (您可能必须适当地处理依赖关系。)
-
@dezso 我们正在讨论 10 亿行繁忙的表...如何复制它以使过程更快/更好
-
@d.raev dezso 可能是正确的 (see my answer),因为 Postgres WAL 的性质。
标签: postgresql