发布于 2026-09-10T10:59:39.079499Z · Shaun Thomas · pgEdge 博客

pgEdge 的 Shaun Thomas 讲分区表上的老问题:唯一约束和主键必须包含全部分区键列,因为每个分区各有索引,没有全局索引来判断某个值是否已存在于别的分区。他给了四种绕法:BEFORE INSERT 触发器扫全部分区,开销随分区数线性上升,200 万行从 7 秒涨到 25 秒;改为维护一张不分区的去重表,开销恒定约 2 倍,200 万行 14 秒;对去重表本身做哈希分区;或用 hashtextextended() 算去重键。
pgEdge 的 Shaun Thomas 讲分区表上的老问题:唯一约束和主键必须包含全部分区键列,因为每个分区各有索引,没有全局索引来判断某个值是否已存在于别的分区。他给了四种绕法:BEFORE INSERT 触发器扫全部分区,开销随分区数线性上升,200 万行从 7 秒涨到 25 秒;改为维护一张不分区的去重表,开销恒定约 2 倍,200 万行 14 秒;对去重表本身做哈希分区;或用 hashtextextended() 算去重键。
来源记录
- center.info_item · c59e3e180eaf2153 · 2026-10-03T04:08:35.169032Z
- pgweb.info_item · c59e3e180eaf2153 · 2026-10-03T04:08:55.967155Z