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 交流。
➡️