ApacheDoris优化器的未来 周明宏 SelectDB高级研发工程师 DataFunSummit#2023 目录CONTENT 重塑 为什么我们要重做Doris优化器 优化的本质 以统一的视角重新理解优化的规则 性能瓶颈 突破性能瓶颈的两个小故事 挑战 理论上很完美,但是。。。 01 重塑 DataFunSummit#2023 01缺少优化规则的抽象 不方便细粒度控制规则使用,不方便query调优增加优化规则的额外成本高 不能查看规则优化后的plan 02缺少CBO框架 没有统计信息收集框架统计信息推导能力不足代价模型代码零散 没有逻辑代数的枚举,只能做有限的CBO 03树的遍历 只有两轮bottom-up的遍历无法实现对有循环依赖的规则 无法实现一些需要改变底层节点的规则 TPC-H500G 120000 100000 80000 前期用户测评 60000 40000 20000 0 12345678910111213141516171819202122 nereids人工改写 在ssb、tpch500G/1T测试中超越人工改写sql 用户POC测评中性能远超老优化器 02 优化的本质 DataFunSummit#2023 描述 我需要的数据是什么 select*fromLjoinRon... 返回结果 优化器 决定怎么做 执行引擎 物理计划树 优化查询计划 改写查询计划 逻辑计划树 逻辑计划树 SQL 查询执行 语义分析 语法分析 抽象语法树 执行结果 RBO 谓词下推表达式改写常量折叠消除空算子 ...CBO Joinreorder CTE策略选择Aggregation策略选择 ... 语义分析 RBO MEMO BE可理解的物理计划 后处理 物理计划 CBO MEMO 翻译 物理计划 查询执行 尽早降低数据规模 中美贸易详情(TPC-Hq7) orders customer supplier nation 订单号 customer customer国籍 supplier supplier国籍 Joinreorder 动态规划 DPSizeDPSubDPhyperCascading .... Nereids Cascading+DPhyper 03 性能瓶颈 DataFunSummit#2023 两次重要突破 01rewrite重构 节约MemoCopyIn/CopyOut 02CostAndEnforce优化 对复杂query提升两个数量级 copyIn copyOut Memo 04 挑战 DataFunSummit#2023 LeftDeepZigZagBushy 大表大表 Cascading 表数量较少,比如少于5 DPhyper 表数量较多 统计信息 误差误差来源检测工具抽样误差 统计信息推导代价模型 假设:均匀分布,字段相关性...引擎实现特点,环境差异,... qError PlanRanker 找出“华为”品牌下商品的订单 订单.商品id=商品.商品id join 订单表 过滤“华为” 商品表 2千万 80万 6亿 品牌“华为”的商品id集合A=[p001,p003] 订单号 商品Id ... 001 p001 ... 002 p002 ... 003 p003 ... 商品Id 品牌 ... p001 华为 ... p002 小米 ... p003 华为 ... 找出“华为”品牌下商品的订单 订单.商品id=商品.商品id join 过滤 [p001,p003] 过滤“华为” 订单表 商品表 2千万 6亿 80万 2400万 品牌“华为”的商品id集合A=[p001,p003] 订单号 商品Id ... 001 p001 ... 002 p002 ... 003 p003 ... 商品Id 品牌 ... p001 华为 ... p002 小米 ... p003 华为 ... 找出Asia的supplier 2百万 join 1千万 1 join region 1千万 25 supplier nation 2百万 1千万 join 中国、日本...的supplier5 supplier join Asia的nation 251 nationregion 2百万 join 2百万 1 join region 2百万 5 RF001 supplier nation 2百万 1千万 join 中国、日本...的supplier5 supplier join Asia的nation 251 nationregion Join RF002 Join 延迟物化 订阅开发者邮件组 订阅社区开发者邮件dev@doris.apache.org并参与社区的邮件讨论中 双周开发者会议(线上会议) 通过会议链接参与到社区开发者双周会:https://meeting.tencent.com/dm/6iQBgkIhn5LO DorisImprovementProposals(DSIP) 通过DSIP查阅社区核心功能设计方案及相关进展:https://cwiki.apache.org/confluence/display/DORIS/Doris+Improvement+Proposals 欢迎关注SelectDB微信公众号 获取最新活动资讯、技术解析、社区动态公司邮箱:support@selectdb.com SelectDB官网:www.selectdb.com 欢迎关注ApacheDorisGitHub&官网 ApacheDorisGitHub:https://github.com/apache/dorisApacheDoris官网:https://doris.apache.org/ 感谢观看