如何解决在 Postgres 10 中快速生成 100 GB Postgres 关系
我正在尝试快速生成一个 100 GB 的 postgres 表。我需要这种关系来预热缓冲区缓存。我曾尝试使用 bytea 和文本字段。这使实际关系很小,而 TOAST 表很大。棘手的部分是由于权限问题无法将 TOAST 表加载到缓存中。我想知道是否有人有快速创建这么大表的经验?
解决方法
我不知道这是否是绝对最快的,但这应该相当不错:
create unlogged table j (x text);
alter table j alter x set storage plain ;
insert into j select repeat('a',4100) from generate_series(1,13107200);
像这样设置存储子句将禁用 TOAST,包括离线存储和在线压缩。取消记录将阻止它流式传输到任何副本或 WAL 档案。将其大小调整为超过半页可确保每页仅写入一行。它仍会消耗主服务器上的存储空间,但我认为托管服务没有任何解决办法。
您可能希望使用 COPY FREEZE 来填充它以避免需要真空,但我认为您无法让它在托管服务上运行良好。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。