SQLAdvisor是由美团点评公司技术工程部DBA团队(北京)开发维护的一个分析SQL给出索引优化建议的工具。它基于MySQL原生态词法解析,结合分析SQL中的where条件、聚合条件、多表Join关系 给出索引优化建议。目前SQLAdvisor在美团点评广泛应用,包括美团支付、酒店旅游、外卖、团购等产品线,公司内部对SQLAdvisor的开发全面转到github上,开源和内部使用保持一致。
开源地址:https://github.com/Meituan-Dianping/SQLAdvisor
SQLAdvisor详细说明
SQLAdvisor快速入门教程
安装过程整理:
cd /srv/ git clone https://github.com/Meituan-Dianping/SQLAdvisor.git git install cmake libaio-devel libffi-devel glib2 glib2-devel yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm yum install cd /srv/SQLAdvisor/ cmake -DBUILD_CONFIG=mysql_release -DCMAKE_BUILD_TYPE=debug -DCMAKE_INSTALL_PREFIX=/usr/local/sqlparser ./ make && make install cd sqladvisor/ cmake -DCMAKE_BUILD_TYPE=debug ./ make |
SQLAdvisor架构和实践
SQLAdvisor release notes
SQLAdvisor开发规范
SQLAdvisor 的优点
- 基于 MySQL 原生词法解析,充分保证词法解析的性能、准确定以及稳定性;
- 支持常见的 SQL(Insert/Delete/Update/Select);
- 支持多表 Join 并自动逻辑选定驱动表;
- 支持聚合条件 Order by 和 Group by;
- 过滤表中已存在的索引。
SQLAdvisor使用举例
sql: SELECT id FROM crm_loan WHERE id_card = '1234567'
cmd: ./sqladvisor -h xx -P xx -u xx -pxx -d xx -q "SELECT id FROM crm_loan WHERE id_card = '1234567'"
SQLAdvisor输出: alter table crm_loan add index idx_id_card(id_card)
ps:除了命令行输入外,还支持文件的方式输入,格式如下
另附Sqladvisor的解析过程输出图如下:
SQLAdvisor架构流程图