SQL优化工具(MYSQL)——SQLAdvisor安装使用

一、 SQLAdvisor 简介
SQLAdvisor 是由美团点评公司技术工程部 DBA 团队(北京)开发维护的一个分析 SQL 给出索引优化建议的工具。它基于 MySQL 原生态词法解析,结合分析 SQL 中的 where 条件、聚合条件、多表 Join 关系 给出索引优化建议。目前 SQLAdvisor 在美团点评广泛应用,包括美团支付、酒店旅游、外卖、团购等产品线,公司内部对 SQLAdvisor 的开发全面转到 github 上,开源和内部使用保持一致。

主要功能:输出SQL索引优化建议

项目 GitHub 地址:https://github.com/Meituan-Dianping/SQLAdvisor

二、 SQLAdvisor 安装
1、依赖包安装
rpm -q cmake libaio-devel libffi-devel glib2 glib2-devel
yum   install cmake libaio-devel libffi-devel glib2 glib2-devel
yum   install --enablerepo=Percona56 Percona-Server-shared-56   (如安装percona数据库,可通过软链接形式实现库文件创建,ln -s /usr/local/mysql/lib/libperconaserverclient.so.18  /usr/lib64/libperconaserverclient.so、)
注意
跟据glib安装的路径,修改SQLAdvisor/sqladvisor/CMakeLists.txt中的两处include_directories针对glib设置的path。glib yum 安装默认不需要修改路径
编译sqladvisor时依赖perconaserverclient_r, 因此需要安装Percona-Server-shared-56。有可能需要配置软链接例如:1. cd /usr/lib64/ 2. ln -s libperconaserverclient_r.so.18 libperconaserverclient_r.so
有可能需要配置percona56 yum源: yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
2、软件包下载
https://github.com/Meituan-Dianping/SQLAdvisor
git clone https://github.com/Meituan-Dianping/SQLAdvisor.git
3、软件包安装
(1)解压安装包
unzip SQLAdvisor-master.zip
(2)安装sqlparser解析
cd SQLAdvisor-master
cmake -DBUILD_CONFIG=mysql_release -DCMAKE_BUILD_TYPE=debug -DCMAKE_INSTALL_PREFIX=/usr/local/sqlparser ./
make
make install
注意:
DCMAKE_INSTALL_PREFIX为sqlparser库文件和头文件的安装目录,其中lib目录包含库文件libsqlparser.so,include目录包含所需的所有头文件。
DCMAKE_INSTALL_PREFIX值尽量不要修改,后面安装依赖这个目录。
(3)安装sqladvisor
cd sqladvisor/
cmake -DCMAKE_BUILD_TYPE=debug ./
make
##此时在编译目录生成可执行文件sqladvisor,可以通过ln -s sqladvisor /usr/bin/这种方式放入PATH路径中,可以通过./sqladvisor执行
三、 SQLAdvisor 使用
1、命令帮助文档查看
[root@node1 ~]# sqladvisor  --help
Usage:
  sqladvisor [OPTION...] sqladvisor

SQL Advisor Summary

Help Options:
  -?, --help              Show help options

Application Options:
  -f, --defaults-file     sqls file
  -u, --username          username
  -p, --password          password
  -P, --port              port
  -h, --host              host
  -d, --dbname            database name
  -q, --sqls              sqls
  -v, --verbose           1:output logs 0:output nothing
2、命令行执行SQLAdvisor
[root@node1 sqladvisor]# sqladvisor  -h 10.1.0.10 -u dbuser -p abc.1234 -P 3306 -d dbtest -q "select * from t2 where id=3;" -v 1
2017-03-12 08:32:31 23537 [Note] 第1步: 对SQL解析优化之后得到的SQL:select `*` AS `*` from `dbtest`.`t2` where (`id` = 3)
2017-03-12 08:32:31 23537 [Note] 第2步:开始解析where中的条件:(`id` = 3)
2017-03-12 08:32:31 23537 [Note] show index from t2
2017-03-12 08:32:31 23537 [Note] 第3步:SQLAdvisor结束!表中没有任何索引
3、SQLAdvisor配合参数文件使用
[root@node1 sqladvisor]# cat sql.cnf
[sqladvisor]
username=dbuser
password=abc.1234
host=10.1.0.10
port=3306
dbname=dbtest
sqls=select * from t2 where id=3;

[root@node1 sqladvisor]# sqladvisor  -f sql.cnf -v 1
2017-03-12 08:34:03 24195 [Note] 第1步: 对SQL解析优化之后得到的SQL:select `*` AS `*` from `dbtest`.`t2` where (`id` = 3)
2017-03-12 08:34:03 24195 [Note] 第2步:开始解析where中的条件:(`id` = 3)
2017-03-12 08:34:03 24195 [Note] show index from t2
2017-03-12 08:34:03 24195 [Note] 第3步:SQLAdvisor结束!表中没有任何索引

四、 SQLAdvisor 附录
1、错误信息以及解决方案
错误信息01:
Scanning dependencies of target sqladvisor
[100%] Building CXX object CMakeFiles/sqladvisor.dir/main.cc.o
Linking CXX executable sqladvisor
/usr/bin/ld: cannot find -lperconaserverclient_r
collect2: ld returned 1 exit status
make[2]: *** [sqladvisor] Error 1
make[1]: *** [CMakeFiles/sqladvisor.dir/all] Error 2
make: *** [all] Error 2
##由于缺少percona的库文件libperconaserverclient_r.so或者在/usr/lib64下不存在,解决方案就是安装percona库文件包或通过软链接形式ln -s libperconaserverclient_r.so.18 libperconaserverclient_r.so
2、结构流程图(参考源码文档)




来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27067062/viewspace-2135172/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/27067062/viewspace-2135172/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值