目录
- 归纳
- sql本身的优化
- 数据库层面的优化
归纳
这类型问题可以称为:Query Optimization,从清华AI4DB的paper list中,该类问题大致可以分为:
- Query Rewriter
- Cardinality Estimation
- Cost Estimation
- Plan Optimization
从中文的角度理解那就是:
- 查询重写
- 基数估计
- 成本估计
- 执行计划优化
sql本身的优化
可以发现,这类型的优化问题,大多数从sql本身,或者说从执行计划本身入手,通过执行计划本身的优化来提升sql的性能。比如,数据库优化器给出某条sql的执行计划,但是由于数据库本身对于基数估计不准确,所以产生了次优的执行计划,这时候查询重写技术通过对执行计划进行优化,修改join order条件,达到更优的执行计划,从而提升sql的执行效率。
数据库层面的优化
但还有一类型的优化,并不从sql的本身出发,或者说不是那么直接的sql层面出发,而是从数据库层面入手,就有很多优化技术:如,参数调优、物化视图等技术。
以spark-sql为例,它有很多参数,而每次执行的结果和对应的参数密切相关,参数调优的目的就是找到一组最佳的参数去调高sql执行效率,它不从sql层面入手,但是却也达到了sql优化的效果。