TiDB SQL Engine Team:纯手工打磨前沿的优化器和执行引擎|PingCAP 招聘季
“SQL at SCALE”(出自 PingCAP 官网)是我们对 TiDB 的一个精简概括,而我们 TiDB SQL Engine Team 正是负责这 3 个单词中的 “SQL” 部分,其重要性可见一斑。SQL 在数据库中的大致处理流程可以简短概括为查询优化和执行,这期间涉及到 SQL Parser、优化器、统计信息和执行引擎等模块,他们就是 TiDB SQL Engine Team 目前所负责的模块。接下来我会用简短的篇幅向大家介绍 SQL Engine 的背景知识,以及我们在做的事情,面临的挑战等。
关于查询优化
优化器是 SQL 引擎的大脑,负责查询优化。查询优化的主要工作概括起来很简单:搜索可行的执行计划,从中挑一个最好的。但要做好这两件事却是整个分布式数据库中最难的地方。
1979 年 Selinger 发布了 “Access Path Selection in a Relational Database Management System [1]”,正式拉开了 Cost Based Optimization 的帷幕,这篇论文也被视为 CBO 优化器的圣经。在这之后陆续出现了 Starburst [2](1988 年),Volcano Optimizer Generator [3](1993 年)和 Cascades Framework [4](1995 年) 等,每年数据库三大顶会中也能看到不少查询优化相关的论文,整个优化器领域可谓是蓬勃发展。但即使如此,优化器也仍然有很多问题未能得到很好的解决,比如:
Guy Lohman 2014 年在 “Is Query Optimization a “Solved” Problem? [5]” 中详细讲述的 SQL 算子结果集估算的难题。简单来说,要估算某个表需要扫多少行数据比较容易,但是要再估算更上层的 SQL 算子,比如 Join 或者 Join 之后再 Group By 的结果集有多大,这个就很难了。可以想象的是,估算误差会随着层数的增加而被放大,这个放大有时候是数量级的。此外还会出现负负得正的情况:明明估算错了,但是执行计划却是对的,纠正估算误差后,执行计划反而不对了
关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
随时掌握互联网精彩
- 1 守护好中华民族的文化瑰宝 7979662
- 2 梅大高速塌方致52死 调查报告发布 7990957
- 3 外交部回应特朗普征收25%关税 7827742
- 4 从年货购物车里解码消费新动向 7721373
- 5 江西“最强钉子户”:后悔没答应拆迁 7681777
- 6 向太给人取名主打一个简单 7551223
- 7 警犬因“班味过重”惨遭没收年终奖 7481997
- 8 砂糖橘吃多了真的会变小黄人 7382328
- 9 卖猪商户切肉时发现猪被打针 7227710
- 10 韩国网友抵制宋慧乔新片 7118838