新版TDSQLMySQL 计算引擎能力解析 主讲人:马晓宇 TDSQL-MySQL行业需求 KSF 产品能力 结果 低延迟高并发高可用 稳定性强查询能力佳 银行行业市占率持续提升,健康发展 Oracle兼容性AP性能平滑过度 HTAP、Oracle 兼容 Oracle兼容能力领先、具备强有力的一站式HTAP 特定需求比如时序能力等 成本敏感弹性 整合多引擎统一管控持续降低使用成本 核心替换逐步启动,抓紧行业特性,增加行业覆盖 按照行业特点和政策要求,目前正从A向B、C转移,需要持续迭代产品能力与策略来应对不同的需求 201820192020 20212022 2023 20242025 20262027 需求A 需求B 需求C 全行业开启全面替换,部分行业可能先行,23或24年开始, 年开始大规模推进,27年完成阶段性目标 需求C 预估25 能源交通 制造教育 医疗物流 … 规模 年开始大 开始,22 ,20年 启规模验证 行业开 好的重点 需求BIT基础较推进 非银金融 (保险、资管等行业) 规模推进 20年大 18年开始, 化替代, 同步国产 心系统, 需求A新建核 银行核心、政府重要民生类业务 (国有大行、股份制/城商行、税务、社、医保等) TDSQL-MySQL计算引擎新版本 更强的计算能力 更平顺的使用体验 分布式数据库 TDSQL 更多SQL特性HTAP能力 TDSQL-MySQL计算引擎新架构图 SQL 查询解析 Plan Agg Join ScanScan 逻辑计划生成 Plan Agg HashJoin ScanScan 基于代价优化 统计信息 Dist-Plan Agg PartialAggHashJoin ScanScan 分布式计划生成 读写分离 分布式执行 分析加速 Set1 Libra主从 Set2 Libra AST Grp Join t1 t2 元信息 表结构 分片信息 主 从 更强的计算能力-多层次的下推 快速下推 代价优化 + 并行执行 HTAP引擎 Libra 分析引擎 优化点:列存+MPP 预期:数量级提升 复杂查询/混合负载 优化点:利用分布式并行能力预期:倍数提升 简单范式TP类 优化点:绕过冗余计算预期:百分比提升 o.cid='1' JOIN(c,o) AVG(p.price) 更强的计算能力-多层次的下推 更多层次的下推优化 对符合下推条件的查询直接下推减少不必要的 优化 在不同阶段插入快速下推检查 针对无法快速下推的复杂场景进行深度优化 兼顾不同场景的优化需求,提高吞吐降低延迟 SQLEngine 快速下推检查基于规则优化 再次快速下推检查基于代价深度优化 SELECTAVG(o.price),c.regionFROMcustomerc,ordero WHEREo.cid=c.cidANDo.cid='1‘ DataNode DataNode Order_s2 shardbycid Customer_s2 shardbycid Order_s1 shardbycid Customer_s1 shardbycid GROUPBYc.region; 更强的计算能力-更完备的计算下推 更完备的下推优化 针对复杂查询进行计划变换最大化下推效果 更完备且灵活的计划改写能力 驱动数据节点尽可能多并行承担计算任务 优化器增加对分片等更多维度的感知 让计算以更合适的形式和更合适的位置被执行 SELECTAVG(o.price),c.regionFROMcustomerc,ordero DataNode DataNode Order_s2 shardbycid Customer_s2 shardbycid Order_s1 shardbycid Customer_s1 shardbycid WHEREo.cid=c.cidANDo.prod='piano'GROUPBYc.region; AVG(o.price) SUM(o.price)COUNT(res_cnt) JOIN(c,o) SQLEngine 基于代价优化 o.prod='piano' Agg Join Filter<t1.idnotnull> indexscan<t2> scan<t1> 更强的计算能力-更完备的计算下推 groupbykey为分片键 Agg Agg PartialAgg JoinJoin Filter<t1.idnotnull> indexscan<t2> Filter<t1.idnotnull> indexscan<t2> scan<t1>scan<t1> t1.id/t2.id并不都为分片键groupbykey不为分片键 selectt1.?,sum(t2.c1)fromt1,t2wheret1.id=t2.idgroupbyt1.? TDSQLHTAP形态 TPEngine 并行复制 MasterNode LibraEngine MPP 列存 基于代价优化 基于GTID+水位线的一致性读取 更强的计算能力–HTAP能力 特点和优势 提供基于规则和代价的引擎选择 列存+MPP引擎带来数量级性能提升 引擎间数据同步提供更强的一致性约束 强资源隔离+一致性数据读取 适用场景 实时分析和报表 复杂查询分流 跑批结算 模板化二级分区 定义 更顺滑的用户体验-更自由的分布式表 新版本支持使用兼容MySQL分区表 的方式定义分布式表 每个一级分区就是分片 支持Hash/Range/RangeColumn/List/ListColumn多种分片方式 支持模板化二级分区定义 一级分区用于分片 二级分区用于分片内数据管理,例如按日建立二级分区以便按日淘汰数据 分片定义即 一级分区定义 类别 新特性 存储过程 复合语句和流程控制 兼容MySQL8的高阶特性 函数 CTE 视图触发器 如Rownum,ConnectBy,全链接等SQL特性支持 轻量Oracle兼容 如||拼接符等语法细节兼容 常用函数支持 其他 嵌入式SQL支持 游标 更好的功能增强–常用SQL能力和MySQL/Oracle兼容性 新版本全面兼容MySQL8的高阶特性,使得 MySQL用户向分布式扩展和迁移更加方便 在TDSQLPostgreSQL引擎全面支持Oracle兼容的情况下,TDSQLMySQL引擎新增轻量Oracle兼容,方便熟悉MySQL的用户群体迁移Oracle应用 新增C/C++代码中嵌入式SQL功能支持 THANKS