postgresql – Postgres SET UNLOGGED需要很长时间
发布时间:2020-12-13 16:00:21 所属栏目:百科 来源:网络整理
导读:运行Postgres-9.5.我有一个大表,我正在做ALTER TABLE表SET UNLOGGED.我已经删除了针对该表的所有外键约束,因为FK引用的表不能未记录.查询花了大约20分钟,一直消耗100%的CPU.我可以理解它需要花费很长时间来记录一个表,但是让它不被记录似乎并不困难……但是
运行Postgres-9.5.我有一个大表,我正在做ALTER TABLE表SET UNLOGGED.我已经删除了针对该表的所有外键约束,因为FK引用的表不能未记录.查询花了大约20分钟,一直消耗100%的CPU.我可以理解它需要花费很长时间来记录一个表,但是让它不被记录似乎并不困难……但是它呢?
有什么办法可以让你更快地设置一个未记录的表吗? 解决方法
SET UNLOGGED涉及表重写,因此对于大型表,您可能需要花费很长时间.
正如你所说,看起来似乎没有表格难以理解.简单地转换表并不困难;复杂因素是需要使其安全可靠. UNLOGGED表有一个与之关联的附加文件(init fork),并且无法将此文件的创建与提交的其余部分同步. 所以相反,SET UNLOGGED构建了一个表的副本,附加了一个init fork,然后交换新的 如果你真的需要最大限度地减少停机时间,你可以采用类似于SET UNLOGGED所采用的方法:创建一个新的UNLOGGED表,复制所有记录,在同步最后几个更改时暂时锁定旧表,并交换完成后,使用RENAME创建新表. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |