1、S Q L 优 化 技 术 的 挑 战 与 未 来浪潮开务数据库创新研究院院长让 数 据 库 会 思 考魏 可 伟01数据库优化回顾02优化技术面临的挑战03优化:Inside-out+Outside-in目录01数据库优化回顾什么是数据库查询优化 SQL 语言只描述要什么,不描述怎么做 查询优化技术为给定的查询(SQL)选择最高效的执行计划描述式语言我在首都机场;我要去浪潮大厦优化器工作原理基于规则RBO基于成本CBO查询数据库设计统计信息数据库及应用参数执行计划(Access Plan)优化:Inside-out vs Outside-in基于规则RBO基于成本CBO更好的执行计划改写查询
2、与应用优化数据库设计(索引、分区、分表等)及时收集所需统计信息调整数据库及应用参数Outside:数据库与应用优化+数据库运维工具Inside不断改进的优化器更多规则更大的搜索空间更准确的成本估算02优化技术面临的挑战 不完整/不准确的统计信息 编译时优化的限制 单一计划的局限性 缺乏全局视角 缺失计划生命周期管理 缺少异构环境支持传统查询优化技术所面临的挑战 统计信息是查询优化的基础SELECT*FROM ORDERSWHERE ORDER_DATE=?;表扫描(Table Scan)索引扫描(Index Scan)vs 如果表中有1条记录?如果表中有10000万条记录?对不完整/不准确的信
3、息缺乏免疫力统计信息是查询优化的基础SELECT*FROM ORDERSWHERE ORDER_DATE=?;如果统计信息不准确对不完整/不准确的信息缺乏免疫力统计信息是查询优化的基础SELECT*FROM ORDERSWHERE ORDER_DATE=?;被动导致迟滞Inside基于规则规避风险利用实时统计信息Outside及时收集统计信息对不完整/不准确的信息缺乏免疫力编译时的信息缺失带来的挑战SELECT*FROM CUSTOMERSWHERE BIRTH_DATE?;表扫描索引扫描如果传入参数是2022年?如果传入参数是1900年?编译时优化的限制vs Inside基于规则规避风险运行
4、时重优化Outside不使用参数使用优化器HINT缺少整合方案编译时的信息缺失带来的挑战SELECT*FROM CUSTOMERSWHERE BIRTH_DATE?;如果传入参数是2022年?如果传入参数是1900年?编译时优化的限制表扫描索引扫描vs 单一执行计划不能满足全部需要SELECT*FROM CUSTOMERSWHERE SVIP=?;99900位客户不是SVIP100位客户是SVIP单一执行计划的局限性Inside持续重优化Outside改造应用成本/性能不能满足要求单一执行计划不能满足全部需要SELECT*FROM CUSTOMERSWHERE SVIP=?;99900位客户不
5、是SVIP100位客户是SVIP单一执行计划的局限性 优化是平衡的艺术重组数据提升一些查询性能牺牲另一些查询性能缺乏全局视角 优化的目标是提升全局性能,提升关键应用负载的性能 传统优化器“只见一叶”随机分区提升插入性能牺牲查询性能建立索引提升查询性能增加更新开销及时收集统计信息提升优化效果增加维护成本 要不要重优化?收益利用新的统计信息利用新的设计(索引等)利用新的优化器特性风险执行路径变化导致性能变差Inside计划重用Outside执行计划管理工具灰度部署人工介入难以避免缺失计划生命周期管理 新数据库架构带来的新的挑战 跨数据模型的优化 自动选择合适的计算模型 行存、列存、文档(Json)
6、、图等 子计划可以选择不同的计算模型异构环境支持 跨硬件环境的优化 FPGA加速 GPU加速03优化:Inside-out+Outside-in开务自治平台自治优化引擎开务数据库优化不仅仅在数据库内SQL 优化器CBORBO自治信息仓库负载描绘历史编译描绘历史执行描绘历史负载分析策略分析洞察分析负载优化策略负载优化洞察负载描绘编译描绘执行描绘规则洞察成本洞察优化策略SQL 执行器计划执行计划调整实时反馈计划调度开务数据库:Inside-out+Outside-in 开务数据库是面向物联网应用的分布式 多模数据库。开