 Apache Doris 在美团外卖数仓中的应用实践Doris引擎在美团的重要改进 Join 谓词下推的传递性优化 如上图所示,对于下面的 SQL: select * from t1 join t2 on t1.id = t2.id where t1.id = 1 Doris开源版本默认会对t2表进行全表Scan,这样会导致上面的查询超时,进而导致外卖业务在D oris上的第一批应用无法上线。 于是我们在Doris中实现了第一个优化:Join谓词下推的传递性优化(MySQL和TiDB中称之为Cons SQL和TiDB中称之为Cons tant Propagation)。Join谓词下推的传递性优化是指:基于谓词t1.id = t2.id和t1.id = 1, 我们可以推断出新的谓词t2.id = 1,并将谓词t2.id = 1下推到t2的Scan节点。 这样假如t2表有数百 个分区的话,查询性能就会有数十倍甚至上百倍的提升,因为t2表参与Scan和Join的数据量会显 著减少。 查询执行多实例并发优化0 码力 | 8 页 | 429.42 KB | 1 年前3 Apache Doris 在美团外卖数仓中的应用实践Doris引擎在美团的重要改进 Join 谓词下推的传递性优化 如上图所示,对于下面的 SQL: select * from t1 join t2 on t1.id = t2.id where t1.id = 1 Doris开源版本默认会对t2表进行全表Scan,这样会导致上面的查询超时,进而导致外卖业务在D oris上的第一批应用无法上线。 于是我们在Doris中实现了第一个优化:Join谓词下推的传递性优化(MySQL和TiDB中称之为Cons SQL和TiDB中称之为Cons tant Propagation)。Join谓词下推的传递性优化是指:基于谓词t1.id = t2.id和t1.id = 1, 我们可以推断出新的谓词t2.id = 1,并将谓词t2.id = 1下推到t2的Scan节点。 这样假如t2表有数百 个分区的话,查询性能就会有数十倍甚至上百倍的提升,因为t2表参与Scan和Join的数据量会显 著减少。 查询执行多实例并发优化0 码力 | 8 页 | 429.42 KB | 1 年前3
 SelectDB案例 从 ClickHouse 到 Apache Doris列用来存储主键 ID Hash 后的分桶序号,算法和 Doris 的分桶算法相同(CRC32);  BE 生成 Bucket Join 执行计划,将分桶序号下发到 BE ScanNode 节点,并下推到 ES;  ES 对查询出的数据进行 Bitmap 压缩,并将数据的多批次获取优化为一次获取,减 少网络 IO 开销;  Doris BE 只拉取和本地 Doris 指标表相关 Bucket0 码力 | 12 页 | 1.55 MB | 1 年前3 SelectDB案例 从 ClickHouse 到 Apache Doris列用来存储主键 ID Hash 后的分桶序号,算法和 Doris 的分桶算法相同(CRC32);  BE 生成 Bucket Join 执行计划,将分桶序号下发到 BE ScanNode 节点,并下推到 ES;  ES 对查询出的数据进行 Bitmap 压缩,并将数据的多批次获取优化为一次获取,减 少网络 IO 开销;  Doris BE 只拉取和本地 Doris 指标表相关 Bucket0 码力 | 12 页 | 1.55 MB | 1 年前3
共 2 条
- 1













