《Doris 新优化器背后的故事.pdf》由会员分享,可在线阅读,更多相关《Doris 新优化器背后的故事.pdf(26页珍藏版)》请在三个皮匠报告上搜索。
1、DataFunSummitDataFunSummit#20232023A Apache Doris pache Doris 优化器的优化器的未来未来周明宏SelectDB 高级研发工程师重塑重塑为什么我们要重做 Doris 优化器性能性能瓶颈瓶颈突破性能瓶颈的两个小故事优化的优化的本质本质以统一的视角重新理解优化的规则挑战挑战理论上很完美,但是。目录目录 CONTENTCONTENTDataFunSummitDataFunSummit#202320230101重塑重塑Nereids:新一代优化器0101缺少优化规则的缺少优化规则的抽象抽象不方便细粒度控制规则使用,不方便query 调优增加优化
2、规则的额外成本高不能查看规则优化后的plan 0 02 2缺少缺少CBOCBO框架框架没有统计信息收集框架统计信息推导能力不足代价模型代码零散没有逻辑代数的枚举,只能做有限的CBO0 03 3树树的遍历的遍历只有两轮bottom-up的遍历无法实现对有循环依赖的规则无法实现一些需要改变底层节点的规则Nereids:我们 Doris 2.0 见在ssb、tpch 500G/1T 测试中超越人工改写 sql 020000400006000080000062TPC-H 500Gnereids人工改写前期用户测评用
3、户 POC 测评中性能远超老优化器DataFunSummitDataFunSummit#202320230202优化的优化的本质本质SQL 的本质-描述性语言优化器优化器决定怎么做决定怎么做执行引擎执行引擎我需要的数据是什么我需要的数据是什么select select*from L join R on.from L join R on.返回结果返回结果描述描述一条 SQL 的旅程语法分析SQL语义分析改写查询计划优化查询计划执行结果查询执行抽象语法树逻辑计划树逻辑计划树物理计划树一条 SQL 的旅程物理计划RBOCBO后处理翻译MEMO物理计划MEMOBE可理解的物理计划语义分析查询执行RBO
4、RBO谓词下推表达式改写常量折叠消除空算子.CBOCBOJoin reorderCTE 策略选择Aggregation 策略选择.什么是优化尽早降低数尽早降低数据据规模规模优化举例尽早降低数据尽早降低数据规模规模中美贸易详情(TPC-H q7)订单号订单号customercustomercustomer customer 国籍国籍suppliersuppliersupplier supplier 国籍国籍nationcustomersupplierorders优化举例尽早降低数据尽早降低数据规模规模Join reorder动态规划动态规划DPSizeDPSubDPhyperCascading.
5、Nereids Nereids Cascading+DPhyperDataFunSummitDataFunSummit#202320230303性能性能瓶颈瓶颈两次重要突破0 02 2 CostAndEnforce CostAndEnforce 优化优化对复杂query提升两个数量级0101 rewrite rewrite 重构重构节约 Memo CopyIn/CopyOutMemoMemocopycopyInIncopycopyOutOutDataFunSummitDataFunSummit#202320230404挑战挑战公平与效率Left DeepLeft DeepZigZagZigZa
6、gBushyBushy大表大表CascadingCascading表数量较少,比如少于5DPhyperDPhyper表数量较多公平与效率与误差共存统计信息统计信息推导代价模型误差抽样误差假设:均匀分布,字段相关性.引擎实现特点,环境差异,.qErrorPlan Ranker误差来源检测工具颠覆者Runtime Filter订单表商品表过滤“华为”join2 2 千万千万8080万万6 6 亿亿品牌“华为”的商品 id 集合A=p001,p003订单.商品 id=商品.商品 id找出“华为”品牌下商品的订单订单号订单号商品商品 Id Id.001p001.002p002.003p003.商品商品
7、IdId品牌品牌.p001华为.p002小米.p003华为.订单表商品表过滤“华为”过滤p001,p003join2 2 千万千万80 80 万万2400 2400 万万6 6 亿亿品牌“华为”的商品 id 集合A=p001,p003订单.商品 id=商品.商品 id找出“华为”品牌下商品的订单颠覆者Runtime Filter订单号订单号商品商品 Id Id.001p001.002p002.003p003.商品商品IdId品牌品牌.p001华为.p002小米.p003华为.找出Asia的suppliernationregionjoinsupplierjoinAsia 的 nation中国、日
8、本.的 supplier25151千万2百万suppliernationjoinregionjoin2511千万2百万1千万颠覆者Runtime FilternationregionjoinsupplierjoinAsia的nation中国、日本.的supplier25151千万2百万suppliernationjoinregionjoin512百万2百万2百万Join延迟物化RF001RF002Join颠覆者Runtime Filter如何加入 Apache Doris 社区订阅开发者邮件组订阅开发者邮件组 订阅社区开发者邮件 devdoris.apache.org 并参与社区的邮件讨论中
9、双周开发者会议双周开发者会议(线上会议线上会议)通过会议链接参与到社区开发者双周会:https:/ ImprovementImprovement Proposals(DSIP)Proposals(DSIP)通过DSIP查阅社区核心功能设计方案及相关进展:https:/cwiki.apache.org/confluence/display/DORIS/Doris+Improvement+Proposals 欢迎关注:欢迎关注欢迎关注 SelectDB SelectDB 微信公众号微信公众号获取最新活动资讯、技术解析、社区动态欢迎欢迎关注关注 Apache Doris GitHub&Apache Doris GitHub&官网官网Apache Doris GitHub:https:/ Doris 官网:https:/doris.apache.org/公司邮箱:SelectDB 官网:感谢观看感谢观看