Tomas Vondra:[补丁想法] 并行 pgbench -i

💡 原文英文,约700词,阅读约需3分钟。
📝

内容提要

文章建议通过并行数据加载来加速 pgbench -i,减少准备时间。方法是使用多个客户端同时生成和发送数据,并利用 pthread 实现并行处理。作者还讨论了按 ID 范围或分区分配任务的策略。尽管复杂性增加,但初步测试显示速度提升明显。

🎯

关键要点

  • pgbench 是最常用的 Postgres 基准测试工具,但初始数据加载仍然是串行的,导致准备时间长。
  • 建议通过并行数据加载来加速 pgbench -i,使用多个客户端同时生成和发送数据。
  • 该补丁的实现完全在客户端,代码简单,易于理解和修改。
  • pgbench 可以通过指定 -j N 创建多个进程来生成工作负载,利用 pthread 实现并行加载。
  • 数据可以通过不同策略分配给工作者,例如按 ID 范围分配或使用协调者分配小范围 ID。
  • 主要风险是速度提升可能低于预期,复杂性可能不值得,但可以通过快速测试来评估。
  • 如果对该补丁感兴趣,可以通过电子邮件联系作者或与其他 Postgres 开发者交流。

延伸问答

如何通过并行数据加载加速 pgbench -i?

可以通过使用多个客户端同时生成和发送数据来实现并行数据加载,从而加速 pgbench -i。

pgbench -i 的初始数据加载为什么是串行的?

pgbench -i 的初始数据加载是串行的,因为只有一个进程执行 COPY 操作,这导致准备时间较长。

在实现并行加载时,数据如何分配给工作者?

数据可以通过按 ID 范围分配或使用协调者分配小范围 ID 的策略来分配给工作者。

使用并行加载的主要风险是什么?

主要风险是速度提升可能低于预期,复杂性可能不值得,但可以通过快速测试来评估。

pgbench 的并行加载补丁实现在哪一侧?

该补丁的实现完全在客户端,代码简单,易于理解和修改。

如何联系作者以获取更多关于补丁的信息?

可以通过电子邮件联系作者,或与其他 Postgres 开发者在 pgsql-hackers 交流。

➡️

继续阅读