跳转到主要内容

查询调优

Query Tuning 分类下的 55 个 PostgreSQL 核心配置参数档案。

条目 URL 保持扁平;本分类仅用于侧栏与浏览组织。

constraint_exclusion

constraint_exclusion:允许规划器利用约束排除不可能匹配的表。实测在档范围为 PG9.0–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 partition,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

cpu_index_tuple_cost

cpu_index_tuple_cost:设置规划器处理每个索引条目的成本估计。实测在档范围为 PG9.0–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 0.005,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

cpu_operator_cost

cpu_operator_cost:设置规划器执行每个操作符或函数调用的成本估计。实测在档范围为 PG9.0–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 0.0025,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

cpu_tuple_cost

cpu_tuple_cost:设置规划器处理每个元组(行)的成本估计。实测在档范围为 PG9.0–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 0.01,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

cursor_tuple_fraction

cursor_tuple_fraction:设置规划器对游标实际取回行比例的估计。实测在档范围为 PG9.0–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 0.1,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

default_statistics_target

为没有单独目标值的列设置 ANALYZE 默认统计细节级别。更多细节可能改善基数估算,但会增加统计收集时间和系统目录空间。

effective_cache_size

规划器对单条查询可用 PostgreSQL 数据缓存规模的估计;它影响成本计算,但不会分配内存。

enable_async_append

enable_async_append:允许规划器使用异步 Append 计划。实测在档范围为 PG14–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 on,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

enable_bitmapscan

enable_bitmapscan:允许规划器使用位图扫描计划。实测在档范围为 PG9.0–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 on,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

enable_distinct_reordering

enable_distinct_reordering:允许规划器重排 DISTINCT 键。实测在档范围为 PG18–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 on,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

enable_eager_aggregate

enable_eager_aggregate:允许规划器把部分聚合提前推过连接。实测在档范围为 PG19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 on,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

enable_gathermerge

enable_gathermerge:允许规划器使用 Gather Merge 计划。实测在档范围为 PG10–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 on,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

enable_group_by_reordering

enable_group_by_reordering:允许规划器重排 GROUP BY 键。实测在档范围为 PG17–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 on,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

enable_hashagg

enable_hashagg:允许规划器使用哈希聚合计划。实测在档范围为 PG9.0–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 on,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

enable_hashjoin

enable_hashjoin:允许规划器使用哈希连接计划。实测在档范围为 PG9.0–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 on,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

enable_incremental_sort

enable_incremental_sort:允许规划器使用增量排序步骤。实测在档范围为 PG13–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 on,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

enable_indexonlyscan

enable_indexonlyscan:允许规划器使用仅索引扫描计划。实测在档范围为 PG9.2–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 on,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

enable_indexscan

enable_indexscan:允许规划器使用索引扫描计划。实测在档范围为 PG9.0–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 on,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

enable_material

enable_material:允许规划器插入物化节点。实测在档范围为 PG9.0–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 on,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

enable_memoize

enable_memoize:允许规划器使用 Memoize 缓存节点。实测在档范围为 PG14–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 on,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

enable_mergejoin

enable_mergejoin:允许规划器使用归并连接计划。实测在档范围为 PG9.0–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 on,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

enable_nestloop

enable_nestloop:允许规划器使用嵌套循环连接计划。实测在档范围为 PG9.0–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 on,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

enable_parallel_append

enable_parallel_append:允许规划器使用并行感知的 Append 计划。实测在档范围为 PG11–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 on,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

enable_parallel_hash

enable_parallel_hash:允许规划器使用并行哈希计划。实测在档范围为 PG11–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 on,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

enable_partition_pruning

enable_partition_pruning:允许在规划和执行阶段裁剪分区。实测在档范围为 PG11–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 on,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

enable_partitionwise_aggregate

enable_partitionwise_aggregate:允许按分区执行聚合与分组。实测在档范围为 PG11–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 off,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

enable_partitionwise_join

enable_partitionwise_join:允许按匹配分区执行连接。实测在档范围为 PG11–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 off,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

enable_presorted_aggregate

enable_presorted_aggregate:允许规划器为带 ORDER BY 或 DISTINCT 的聚合提供预排序输入。实测在档范围为 PG16–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 on,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

enable_self_join_elimination

enable_self_join_elimination:允许消除可证明冗余的唯一自连接。实测在档范围为 PG18–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 on,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

enable_seqscan

enable_seqscan:允许规划器使用顺序扫描计划。实测在档范围为 PG9.0–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 on,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

enable_sort

enable_sort:允许规划器使用显式排序步骤。实测在档范围为 PG9.0–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 on,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

enable_tidscan

enable_tidscan:允许规划器使用 TID 扫描计划。实测在档范围为 PG9.0–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 on,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

from_collapse_limit

from_collapse_limit:设置不再折叠子查询的 FROM 列表规模阈值。实测在档范围为 PG9.0–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 8,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

geqo

geqo:启用遗传查询优化。实测在档范围为 PG9.0–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 on,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

geqo_effort

geqo_effort:设置 GEQO 用于推导其他参数默认值的工作强度。实测在档范围为 PG9.0–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 5,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

geqo_generations

geqo_generations:设置 GEQO 算法迭代代数。实测在档范围为 PG9.0–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 0,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

geqo_pool_size

geqo_pool_size:设置 GEQO 种群中的个体数。实测在档范围为 PG9.0–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 0,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

geqo_seed

geqo_seed:设置 GEQO 随机路径选择的种子。实测在档范围为 PG9.0–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 0,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

geqo_selection_bias

geqo_selection_bias:设置 GEQO 种群内的选择压力。实测在档范围为 PG9.0–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 2,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

geqo_threshold

geqo_threshold:设置 FROM 项达到多少时改用 GEQO。实测在档范围为 PG9.0–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 12,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

jit

当构建包含可用的 JIT 实现且计划估算成本越过阈值时,允许 PostgreSQL 使用即时编译。开启并不意味着每条查询都会执行 JIT。

jit_above_cost

jit_above_cost:设置启用 JIT 编译的查询成本阈值。实测在档范围为 PG11–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 100000,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

jit_inline_above_cost

jit_inline_above_cost:设置 JIT 尝试内联的查询成本阈值。实测在档范围为 PG11–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 500000,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

jit_optimize_above_cost

jit_optimize_above_cost:设置 JIT 执行昂贵优化的查询成本阈值。实测在档范围为 PG11–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 500000,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

join_collapse_limit

join_collapse_limit:设置不再展平 JOIN 构造的 FROM 列表规模阈值。实测在档范围为 PG9.0–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 8,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

min_eager_agg_group_size

min_eager_agg_group_size:设置考虑提前聚合所需的最小平均分组大小。实测在档范围为 PG19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 8,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

min_parallel_index_scan_size

min_parallel_index_scan_size:设置考虑并行索引扫描所需的最小索引数据量。实测在档范围为 PG10–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 512 KiB (64 × 8kB),context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

min_parallel_relation_size

min_parallel_relation_size:设置可考虑并行扫描的关系最小尺寸。实测在档范围为 PG9.6;最后在档的 PG9.6 启动默认值为 8 MiB (1024 × 8kB),context 为 user。它在 PG10 被移除。

min_parallel_table_scan_size

min_parallel_table_scan_size:设置考虑并行表扫描所需的最小表数据量。实测在档范围为 PG10–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 8 MiB (1024 × 8kB),context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

parallel_setup_cost

parallel_setup_cost:设置规划器启动并行工作进程的成本估计。实测在档范围为 PG9.6–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 1000,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

parallel_tuple_cost

parallel_tuple_cost:设置把每行从并行 worker 传给 leader 的成本估计。实测在档范围为 PG9.6–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 0.1,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

plan_cache_mode

plan_cache_mode:控制规划器选择自定义计划还是通用计划。实测在档范围为 PG12–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 auto,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

random_page_cost

这是描述非顺序页面访问相对顺序访问成本的规划器常量。降低它会让索引和位图访问路径显得更便宜,但不会改变存储系统本身的行为。

recursive_worktable_factor

recursive_worktable_factor:设置递归查询工作表平均大小的规划器估计倍数。实测在档范围为 PG15–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 10,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。

seq_page_cost

seq_page_cost:设置规划器顺序读取磁盘页面的成本估计。实测在档范围为 PG9.0–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 1,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。