PostgreSQL技术内幕 读书简记

数据库的架构,本书是查询优化模块 src/backend/optimizer

查询优化的优势(优化器对人):

信息不对称(内部更多:统计数据)

时效性(数据时刻在变,查询计划不是恒定的)

算力不同(人弱爆了)

查询优化分两个层次:基于规则的(RBO);基于代价的(CBO)

逻辑优化:等价变换;

物理优化:变成最优的查询执行器的语言

逻辑优化的可能性:

例子:笛卡尔积的带条件的查询

可以变为:条件下推到表的笛卡尔乘积。

关系表达式计算量降低:需要保存的中间结果减少,从而减少CPU与IO消耗。

可以从水平和垂直方向上尽早缩小笛卡尔积的中间结果:

尽量将选择操作下推到下层节点来做;

尽量在叶子节点使用投影缩小中间结果。

但:很多情况下简单处理会导致不等价!!

物理优化的可能性:

单个表有多个查询路径(全表扫,索引,快速索引,跳表等);多个表的连接顺序;多个连接路径。

工具:

B+树;Hash表;排序;物化

如此多的路径,如何搜索最优?

1 少的话就动态规划寻最优;

2 多的话用启发算法如遗传算法。

源码结构如上图。

plan总调度。prep预处理。path寻最优路径。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值