在上周六举办的 Infra Meetup 上海站上,来自宝尊电商和阿里云的资深工程师们,与我司核心开发工程师一起探讨了新一代开源分布式数据库 TiDB 和 Apache Spark 在 SQL 层面的执行原理、优化方案,以及电商数据的技术解决方案等话题。以下是视频&文字回顾,enjoy~
宝尊是知名品牌电子商务商业伙伴和技术研发解决方案公司,拥有端到端数字化零售及供应链管理系统集成解决方案的自主知识产权。宝尊技术与创新中心为了达成“科技驱动商业未来”的宝尊战略愿景,启动全面的云转型战略以满足宝尊科技能力输出的战略目标。
本次 Meetup 上,邵千里老师分享了宝尊在云原生转型中的技术路线选择和技术挑战,同时介绍 TiDB 作为新一代的数据库,在宝尊的科技转型的过程中的使用现状和效果以及宝尊对这一新技术在未来的平台版图中的位置的展望。
本次分享,李呈祥老师主要介绍了阿里巴巴 EMR 团队在 Spark SQL 方向上的一些优化工作,通过在 Catalyst 和 shuffle 等模块的优化,大幅提高了用户数据处理的性能,最后也介绍了 EMR 在 Spark 优化方向上的一些认识和思考。
首先介绍了 Catalyst 优化。
Join Order 优化,在多表 jion(>12) 的场景下,引入遗传算法,大大降低寻找最优执行计划的代价。
Runtime Filter,join 时,减少大表加载数据量,提升查询性能。
接着介绍了 Shuffle 优化:实现异步非阻塞的 push-style shuffle 模式,提升 shuffle 性能。最后李呈祥老师分享了 EMR 在云原生,使用场景和 SQL 技术三个方向上对 spark 优化的理解和优化方向。
张建老师首先了介绍了 TiDB SQL 层优化器跟执行引擎的一些核心原理,并以外链接消除和 Join Reorder 为例向大家讲解 SQL 转化为 AST 后的逻辑优化是如何进行等价变换得到一个逻辑上可执行的逻辑执行计划的。
然后为大家介绍了物理算子的物理属性的概念,并以此向大家讲述了 TiDB 是如何利用算子的物理属性对逻辑执行计划进行动态规划求解到最终可执行的物理执行计划的。这个物理执行计划之后交给了执行引擎完成数据的读取和计算。为了更高效的完成 SQL 的执行,TiDB 执行引擎从经典 Volcano 模型演进到了向量化的计算模型,并在此基础上进一步对算子内进行多线程优化。最后为大家同步了一些 TiDB SQL 层正在开发的新功能以及接下来要做的一些事情。