《从 TP 到 AP _ OceanBase SQL 引擎的探索和实践_朱涛.pdf》由会员分享,可在线阅读,更多相关《从 TP 到 AP _ OceanBase SQL 引擎的探索和实践_朱涛.pdf(15页珍藏版)》请在三个皮匠报告上搜索。
1、从从TPTP到到AP:AP:OceanBase SQLOceanBase SQL引擎的探索和实践引擎的探索和实践朱涛OceanBase 高级研发专家Contents01OceanBase SQL 引擎02互联网 TP 业务03传统 TP 业务04AP 业务目 录OceanBase SQL 引擎概要介绍查询请求(上海差旅到北京)解析优化规则改写计划管理计划缓存灰度演进统计信息代价模型代价改写基表路径选择连接顺序连接算法其他代数算口分配执行静态引擎向量化并口化内存管理硬件优化DAS购票候车行驶飞行值机到站落地达到高铁站出发地机场北京酒店地铁Xxx航班打车打车(堵车)打车(堵车)Gxxxx(时长较长
2、)地铁(错过末班车)02让互联网 TP SQL 跑的快单表短查询 选准索引就是一切运维解决方案改查询绑索引 HintVS自动改写自动选择自动汰换OceanBase 单表短查询:过滤性很强的条件/Limit分页控制,实际返回数据很少 性能挑战:必须选准索引。但过滤条件复杂,表上索引很多的时候会有难度。单表上有 30 个索引案例一:案例二:SELECT id,value1,value2 FROM T1WHERE key1=1 or key2=2SELECT FROM T1WHERE STATUS IN(FAIL,UNKNOWN)ORDER BY gmt_create limit 20;03让传统业
3、务 TP SQL 跑的快多表(外)连接 连接次序至关重要 多表外连接普遍存在,复杂场景出现过17张表的外连接.性能挑战:生成一个好的连接次序运维解决方案业务修改SQL 语句多数系统仅支持内连接的次序调整Others自 动 调 整 连接 次 序,改写连接类型OceanBaseVSVS简化案例SELECT.FROM t1 -10行LEFT JOIN t2 -1w行ON t1.c1=t2.c1LEFT JOIN t3 -10行ON t1.c1=t3.c1LEFT JOIN t4 -10行ON t1.c1=t4.c1ORDER BY t1.c1LIMIT 1000;无处不在的子查询 子查询用法更任意(
4、FROM,WHERE,HAVING,SELECT,UPDATE SET 等),数量更多(含十几个子查询)性能挑战:相关子查询容易跑的慢运维解决方案业务改造 SQL 语句,改连接VS支持丰富的子查询优化策略,覆盖更全面的场景,将子查询改写为连接。OceanBase案例一,赋值操作中的子查询UPDATE t1SET value1=(SELECT sum(x.value1)FROM t1 x.),WHERE;案例二,OR 谓词中的子查询SELECT.FROM t1WHERE c1=1 OR EXISTS(SELECT 1 FROM t2 WHERE t1.1=t2.c1);案例三,大量子查询SELE
5、CT DISTINCT(SELECT Count(ri.value1)FROM t1 ri.)s1,(SELECT Sum (ri.value2)FROM t1 ri.)s2,(SELECT Count(ri.value3)FROM t1 ri.)s3,(SELECT Sum(cc.value1)FROM t2 cc.)s4,(SELECT Sum(value2)FROM t2.)s5,(SELECT Sum(value1)FROM t3.)s6,.FROM t4 cr,t5 coi,t6 cmolLEFT JOIN t7 cc on.LEFT JOIN t8 cce on.WHERE .OR
6、DER BY cmol.m_opsn_seq;04让 AP 业务 SQL 跑的快数据倾斜/负载倾斜 协同工作,拒绝摸鱼 数据倾斜:一张大表数十个分区,某分区存在一个大账号(行数达到总体的90%以上)性能挑战:一个线程干活,其他线程围观REP_TAB_DATA partition by range(DBSID,QUEUEID)SELECT dbsid,queueid,COUNT(DISTINCT mid),FROM rep_tab_dataGROUP BY dbsid,queueid是是是场景是否支持是是JoinGroup ByTable ScanWind