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 澳门是伟大祖国的一方宝地 7923863
- 2 女子穿板鞋爬山回家脱鞋时被吓一跳 7925838
- 3 张雨绮 为了讨大家喜欢才穿成这样 7848802
- 4 2024 向上的中国 7735843
- 5 72岁老人3年拍100部短剧 7686940
- 6 免费升级宽带后家里成“电诈中心” 7522231
- 7 90%烧伤男生父亲:对方让我高抬贵手 7443655
- 8 9岁女孩胃里取出直径4厘米头发团 7358683
- 9 春熙路不能随便开直播了 7207113
- 10 男子网贷1000元3天内需还2000元 7141634