PostgreSQL查询代价估算(一)
来源:互联网 发布:网络英雄洛克人第三部 编辑:程序博客网 时间:2024/06/15 09:55
PostgreSQL查询优化代价估算基于CPU开销和IO开销,计算公式为:
总代价 =启动代价 + I/O代价 + CPU代价
COST = S + P + W * T
1. P为计划运行的时访问的页数,反映了I/O花费
2. T为访问的元组数,反映了CPU花费(存储层是以页面为单位,数据以页面的形式被读入内存,每个页面上可能有多条元组,访问元组,需要解析元组结构,才能把元组上的字段读出,这消耗的是CPU)
3. W为权重因子,表明I/O到CPU的相关性,又称为选择率(selectivity)。在System-R算法中,每个可能的选择率固化在代价估计的代码中,而在数据字典中存储代价公式和需要的统计信息。而PostgreSQL选择率的处理较为特殊,每个选择率公式使用一个参数化的过程(函数)来表达,选择率计算通过将限制条件中的关系、属性、常量信息和索引标识符以及索引键数目等参数传递给相应的过程来计算。
其中磁盘I/O受以下因素影响:
1) 所选取用于实现查询的特定的逻辑操作符;
2) 中间关系的大小;
3) 用于实现逻辑操作符的物理操作符;
4) 相似操作的排序,例如连接顺序的选择;
5) 物理操作符之间的参数传递。
代价估算,是估算某个路径的花费,属于物理优化范畴。路径可以是单表的路径,也可以是两个关系连接得到的路径,还可以是多个表根据不同的连接方式(左深树、紧密树等)得到的连接路径。所以如下按照单表扫描、两表连接这样的分类展开。
0 0
- PostgreSQL查询代价估算(一)
- PostgreSQL查询代价估算(二)
- PostgreSQL查询代价估算(三)
- PostgreSQL查询代价估算(四)
- PostgreSQL查询代价估算(五)
- PostgreSQL查询代价估算(六)
- PostgreSQL查询代价估算(七)
- PostgreSQL查询代价估算(八)
- PostgreSQL查询代价估算--目录
- (5)执行计划的代价估算
- 数据库查询代价估算优化的深度介绍
- PostgreSQL源码修改 ——查询优化(一)
- PostgreSQL源码修改 ——查询优化(一)
- PostgreSQL查询优化器--逻辑查询优化--子查询优化(一)
- PostgreSQL查询结果错误一例
- PostgreSQL查询优化器--逻辑查询优化--视图优化(一)
- PostgreSQL的查询语句的连接方式与查询计划比较--多表连接(一)
- PostgreSQL查询优化器--逻辑查询优化--视图优化(一)
- MySQL查询优化器源码分析--多表连接优化算法之二,find_best(),搜索表之间的各种组合以得到最优的查询计划
- MySQL查询优化器源码分析--多表连接优化算法之三,greedy_search(),搜索表之间的各种组合以得到最优的查询计划
- MySQL查询优化器源码分析--多表连接优化算法之三,best_extension_by_limited_search
- MySQL查询优化器源码分析--目录
- MySQL查询优化器--表的扫描与表间连接方式
- PostgreSQL查询代价估算(一)
- 密钥 数字证书 http https
- PostgreSQL查询代价估算(二)
- PostgreSQL查询代价估算(三)
- sizeof详解
- java.lang.UnsatisfiedLinkError: no webp-imageio in java.library.path
- 管理的本质
- osi参考模型 tcp/ip概念层
- Manifest merger failed : uses-sdk:minSdkVersion 15 cannot be smaller than version 21 declared in li