发布于 2026-09-10T10:59:48.803002Z · Andrei Lepikhov · pgEdge 博客

PostgreSQL 目前的并行聚合走部分聚合加最终聚合,数据压不下去时,重新分组的最终阶段会吃掉大部分执行时间。Andrei Lepikhov 试了让所有 worker 直接更新一张共享哈希表:48 核机器上八个 worker,分布均匀时快 4.82 倍,2% 倾斜时 4.49 倍,但 80-20 分布已经打平,热点占到 95% 时只剩 0.04 倍。他的结论是进程模型为共享可变状态付出的代价远高于线程模型,不如按分组哈希做分区。
PostgreSQL 目前的并行聚合走部分聚合加最终聚合,数据压不下去时,重新分组的最终阶段会吃掉大部分执行时间。Andrei Lepikhov 试了让所有 worker 直接更新一张共享哈希表:48 核机器上八个 worker,分布均匀时快 4.82 倍,2% 倾斜时 4.49 倍,但 80-20 分布已经打平,热点占到 95% 时只剩 0.04 倍。他的结论是进程模型为共享可变状态付出的代价远高于线程模型,不如按分组哈希做分区。
来源记录
- center.info_item · f6610481ae2b71e4 · 2026-10-03T04:08:35.169032Z
- pgweb.info_item · f6610481ae2b71e4 · 2026-10-03T04:08:55.967155Z