数据库优化器专题汇总”
01
—
Introduction
优化器就是一个搜索引擎,其三要素是:搜索空间、搜索策略、代价模型。
《优化器概述》对优化器方法做了一个总结。
《卡特兰数和Join Tree枚举》对搜索空间大小进行了一个分析。
《Sqlite3源码之JOIN顺序》,sqlite采用贪心算法实现join ordering问题。
02
—
strategy
2.1 bottom-up
《基于动态规划的优化器》介绍了经典系统System R的动态规划方法。
《Starburst》对动态规划方法的枚举过程采用规则系统进行处理。
2.2 top-down
《VOLCANO优化器》基于自顶向下的方式实现了一种基于规则的搜索策略。
03
—
modular query optimizer
04
—
Paper list
大V的paper list
Goetz Graefe:https://dblp.uni-trier.de/pers/hd/g/Graefe:Goetz
Thomas Neumann:https://dblp.uni-trier.de/pers/hd/n/Neumann_0001:Thomas
Pit Fender:https://dblp.uni-trier.de/pers/hd/f/Fender:Pit
优化器是一个很复杂的模块。目前还有以下几个问题没有进行分析:
复杂join条件:采用graph甚至是hypergraph分析;
外连接:我们讨论的join tree还是很简单的笛卡尔乘积,并没有涉及外连接,半连接等情况;
adaptive:同一条语句的最优计划随时会发生变化,需要replan;
cost model:统计和估计是非常影响优化器性能的组件,直接决定最终选出的计划;
物化视图:对中间结果存储,加速查询;
后台回复“opt”,获取优化器系列相关论文。