天天看点

美团点评开源 SQL 优化工具 SQLAdvisor 测试报告

<a href="https://dbarobin.com/2017/03/16/test-report-of-sqladvisor/#0x00-%E7%9B%AE%E5%BD%95" target="_blank">0x00 目录</a>

<a href="https://dbarobin.com/2017/03/16/test-report-of-sqladvisor/#0x01-sqladvisor-%E4%BB%8B%E7%BB%8D" target="_blank">0x01 SQLAdvisor 介绍</a>

<a href="https://dbarobin.com/2017/03/16/test-report-of-sqladvisor/#0x02-sqladvisor-%E5%8E%9F%E7%90%86" target="_blank">0x02 SQLAdvisor 原理</a>

<a href="https://dbarobin.com/2017/03/16/test-report-of-sqladvisor/#0x03-sqladvisor-%E6%B5%8B%E8%AF%95" target="_blank">0x03 SQLAdvisor 测试</a>

<a href="https://dbarobin.com/2017/03/16/test-report-of-sqladvisor/#31-sqladvisor-%E5%AE%89%E8%A3%85" target="_blank">3.1 SQLAdvisor 安装</a>

<a href="https://dbarobin.com/2017/03/16/test-report-of-sqladvisor/#32-%E5%AF%BC%E5%85%A5%E6%B5%8B%E8%AF%95%E6%95%B0%E6%8D%AE" target="_blank">3.2 导入测试数据</a>

<a href="https://dbarobin.com/2017/03/16/test-report-of-sqladvisor/#33-%E6%89%A7%E8%A1%8C%E6%B5%8B%E8%AF%95" target="_blank">3.3 执行测试</a>

<a href="https://dbarobin.com/2017/03/16/test-report-of-sqladvisor/#0x04-%E7%BB%93%E8%AE%BA" target="_blank">0x04 结论</a>

<a href="https://dbarobin.com/2017/03/16/test-report-of-sqladvisor/#0x05-%E5%8F%82%E8%80%83" target="_blank">0x05 参考</a>

日期

作者

文档概要

版本

更新历史

2017/03/14

温国兵

美团点评开源 SQL 优化工具 SQLAdvisor 测试报告

v1.0

文档初稿

SQLAdvisor 是由美团点评公司北京 DBA 团队开发维护的 SQL 优化工具:输入 SQL,输出索引优化建议。它基于 MySQL 原生词法解析,再结合 SQL 中的 where 条件以及字段选择度、聚合条件、多表 Join 关系等最终输出最优的索引优化建议。目前 SQLAdvisor 在美团公司内部大量使用,较为成熟、稳定。[^1]

SQLAdvisor 的优点

基于 MySQL 原生词法解析,充分保证词法解析的性能、准确定以及稳定性;

支持常见的 SQL(Insert/Delete/Update/Select);

支持多表 Join 并自动逻辑选定驱动表;

支持聚合条件 Order by 和 Group by;

过滤表中已存在的索引。

SQLAdvisor 架构流程图:

参考 [^2].

3.1.1 拉取最新代码

3.1.2 安装依赖项

3.1.3 编译依赖项 sqlparser

3.1.4 安装 SQLAdvisor 源码

注:测试环境 MySQL 版本为 5.5.24-log。

为了隐私考虑,线上表名屏蔽,以 tableA 和 tableB 代替。脱敏处理的表结构如下:

导入数据量如下:

测试的语句如下:

其中 a 语句输出信息如下:

以上 10 个语句,平均 1s 就可以得到优化结果。

其中 alter table tableA add index idx_LID_GT(LID,GT) 就是优化建议,跟人工优化得到的结果一致。

另外,tableB 得到优化建议 alter table gamedaylottery20170210_gift_log add index idx_LID_CL(LID,CL),也是比较理想的索引建议。

美团点评开源 SQL 优化工具 SQLAdvisor 得到的优化建议比较满意,建议在线上试用一段时间。这个工具的成本在于需要在线上 DB 安装相关依赖,如果确认采用,可以考虑在初始化 DB 服务器时部署此工具。

本文转自 liqius 51CTO博客,原文链接:http://blog.51cto.com/szgb17/1924357,如需转载请自行联系原作者