【问题标题】:Generate a 100 GB Postgres relation quickly in Postgres 10在 Postgres 10 中快速生成 100 GB 的 Postgres 关系
【发布时间】:2021-05-04 08:36:30
【问题描述】:

我正在尝试快速生成一个 100 GB 的 postgres 表。我需要这种关系来预热缓冲区缓存。我尝试过使用 bytea 和文本字段。这使实际关系保持较小和较大的 TOAST 表。棘手的部分是由于权限问题,无法将 TOAST 表加载到缓存中。我想知道是否有人有快速创建这么大桌子的经验?

【问题讨论】:

  • 用垃圾“加热”缓冲区缓存有什么意义?
  • 这是用于冷缓存性能测试的。理想的方法是刷新缓冲区缓存或删除缓存。但我在云上的托管服务上运行它,我无法这样做。因此,我想用垃圾填充缓存以逐出从上一次运行中缓存的关系。

标签: postgresql caching performance-testing database-performance


【解决方案1】:

不知道会不会是绝对最快的,但这应该还不错:

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 填充它以避免需要清理,但我认为您无法让它在托管服务上正常工作。

【讨论】:

    猜你喜欢
    • 2011-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-18
    • 1970-01-01
    • 1970-01-01
    • 2011-07-14
    • 1970-01-01
    相关资源
    最近更新 更多