PostgreSQL查询代价估算(一)

PostgreSQL查询优化代价估算基于CPU开销和IO开销,计算公式为:

总代价 =启动代价 + I/O代价 + CPU代价

COST = S + P + W * T

1.         P为计划运行的时访问的页数,反映了I/O花费

2.         T为访问的元组数,反映了CPU花费(存储层是以页面为单位,数据以页面的形式被读入内存,每个页面上可能有多条元组,访问元组,需要解析元组结构,才能把元组上的字段读出,这消耗的是CPU

3.         W为权重因子,表明I/OCPU的相关性,又称为选择率(selectivity)。在System-R算法中,每个可能的选择率固化在代价估计的代码中,而在数据字典中存储代价公式和需要的统计信息。而PostgreSQL选择率的处理较为特殊,每个选择率公式使用一个参数化的过程(函数)来表达,选择率计算通过将限制条件中的关系、属性、常量信息和索引标识符以及索引键数目等参数传递给相应的过程来计算。

 

其中磁盘I/O受以下因素影响:

1)        所选取用于实现查询的特定的逻辑操作符;

2)        中间关系的大小;

3)        用于实现逻辑操作符的物理操作符;

4)        相似操作的排序,例如连接顺序的选择;

5)        物理操作符之间的参数传递。

 

代价估算,是估算某个路径的花费,属于物理优化范畴。路径可以是单表的路径,也可以是两个关系连接得到的路径,还可以是多个表根据不同的连接方式(左深树、紧密树等)得到的连接路径。所以如下按照单表扫描、两表连接这样的分类展开。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值