You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Postgres使用UNION ALL查询分区表时能否实现并行查询?

可行解决方案

  1. 修正查询写法,适配分区表并行逻辑
    你当前手动拆分两个子分区查询再用UNION ALL拼接的写法,PostgreSQL优化器无法识别为可并行的分区扫描任务,只会串行执行两个独立的查询分支。
    改为直接查询父分区表,依赖分区剪枝自动定位到目标分区,优化器才能生成跨分区的并行执行计划:
SELECT * FROM test_trgm_x 
WHERE (n = 1 AND t ~ '(ulpa)') 
   OR (n = 2 AND t ~ '(piente)');
  1. 调整并行执行相关配置参数
    以下参数需要按需调整,调整后可通过SHOW 参数名确认生效:
  • max_parallel_workers_per_gather:至少设置为2及以上,建议首次测试设为4,控制单个Gather节点最多可调用的并行工作进程数
  • min_parallel_table_scan_size、min_parallel_index_scan_size:均设置为0,绕过默认的最小扫描大小阈值,确保你的单分区55万行数据量级能触发并行
  • parallel_tuple_cost:调低到0.001,parallel_setup_cost调低到100,降低优化器判定并行执行的成本门槛
  1. 确认版本与索引支持
    PostgreSQL 11及以上版本才支持GIN索引的并行扫描,如果你使用的版本低于11,需要先升级数据库版本才能实现trigram GIN索引查询的并行执行。
  2. 强制并行验证
    如果调整后仍然走串行计划,可以执行SET force_parallel_mode = on;强制优化器生成并行计划,验证你的场景是否支持并行,排除成本计算的干扰。

内容的提问来源于stack exchange,提问作者Kamil Szulc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 06:15:10