【发布时间】:2017-06-20 00:03:50
【问题描述】:
运行 Postgres-9.5。我有一张大桌子,我正在做ALTER TABLE table SET UNLOGGED。我已经删除了所有针对该表的外键约束,因为无法取消记录 FK 引用的表。查询耗时约 20 分钟,整个过程消耗了 100% 的 CPU。我可以理解记录表格需要很长时间,但不记录表格似乎并不困难......但是是吗?
我有什么办法可以更快地设置未记录的表吗?
【问题讨论】:
-
也许它正在等待锁定? wiki.postgresql.org/wiki/Lock_Monitoring
-
我通过每隔几秒查询一次
pg_stat_activity来监控它,但没有看到waiting列设置为true,而且我看到CPU 使用率一直很高,这表明它没有等待。另外,我知道根本没有其他查询在运行,因为它位于一个独立的测试数据库中。 -
@NickBarnes 啊,这就是解决方案。对我来说,设置 unlogged 需要重写似乎很奇怪,但我真的不知道 Postgres 在后台是如何工作的。
-
啊。在这种情况下,使用我的特定硬件,我可以更快地创建一个新的未记录表并使用多个进程将数据移动到其中(我的磁盘+缓存足够快,不会成为瓶颈)。谢谢。
-
@Nick:我认为您的 cmets 中有足够的内容可以将其作为可接受的答案。
标签: postgresql alter-table postgresql-9.5