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

PostgreSQL索引扫描启动成本公式中系数50的含义问询

PostgreSQL索引扫描启动成本公式中系数50的说明

背景

针对查询语句 SELECT id, data FROM tbl WHERE data < 240;,结合索引tbl_data_idx的元组数10000、索引树高度H_index=1,使用默认cpu_operator_cost=0.0025代入索引扫描启动成本公式:

start_up cost = {ceil(log₂(N_index_tuple)) + (H_index + 1) × 50} × cpu_operator_cost

计算结果0.285与EXPLAIN输出的0.29一致,这里的疑问是公式中的系数50是什么,是否为统计意义的启发式数值。

解答

  1. 系数50的本质:这是PostgreSQL优化器中固定的启发式经验系数,并非基于实际统计数据计算得到的数值。
  2. 作用:它用于量化索引扫描启动阶段,遍历索引树路径(从根节点到目标叶节点)时,每个层级节点的CPU操作开销——包括节点内元组的查找、比较等基础操作的成本权重。
  3. 源码对应逻辑:在src/backend/optimizer/path/costsize.c的相关代码段中,该系数被用来将索引树层级的遍历操作转化为可计算的CPU成本值,帮助优化器对比不同执行路径的开销,最终选择最优计划。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 07:05:02