PostgreSQL 分区与并行查询优化(Partitioning、Parallel Query、统计信息)
关键实践与参数
- 分区:范围/列表分区;启用分区键索引与约束排除(自动)。
- 并行:
max_parallel_workers_per_gather、parallel_setup_cost、parallel_tuple_cost 调优。
- 统计:提高热点列的
ALTER TABLE ... ALTER COLUMN ... SET STATISTICS 200。
示例
CREATE TABLE logs (ts timestamptz, uid bigint, msg text) PARTITION BY RANGE (ts);
CREATE TABLE logs_2025_11 PARTITION OF logs FOR VALUES FROM ('2025-11-01') TO ('2025-12-01');
验证方法
EXPLAIN (ANALYZE, BUFFERS) 观察分区裁剪与并行计划;比较扫描行数与耗时。
- 统计信息调整前后计划稳定性与误判率。
- 归档老分区并验证查询窗口性能改善。
注意事项
- 分区数量过多会带来计划开销;控制粒度并定期合并归档。
- 并行受工作者与 I/O 约束;避免与重写任务竞争资源。
- 维护分区索引与约束一致性。
发表评论 取消回复