千家信息网

SQLAdvisor如何安装使用

发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,小编给大家分享一下SQLAdvisor如何安装使用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、SQLAdvisor简
千家信息网最后更新 2025年11月09日SQLAdvisor如何安装使用

小编给大家分享一下SQLAdvisor如何安装使用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

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

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

二、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、结构流程图(参考源码文档)




以上是"SQLAdvisor如何安装使用"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

库文件 目录 索引 文件 条件 建议 篇文章 路径 链接 信息 公司 内容 可以通过 命令 形式 文档 方案 解决方案 软件 软件包 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 华为的信息安全与网络安全 2022年绝地求生有几个服务器 德阳软件开发首荐青岗科技 网络安全伴我行作文500字 软件开发教程完整版 暗墨玩明日之后在哪个服务器 服务器数据与版本不对应 想学网络安全专业哪里好 银行冬奥会期间网络安全工作总结 刀片服务器网卡对应交换机 新建数据库时选择哪个字符集 佛山社交软件开发常见问题 互联网科技学什么 网络安全和信息化为单位 湖南智能边缘计算服务器多少钱 无盘网吧服务器 编办网络安全应急演练报告 显示未找到主机服务器 服务器环境管理方案 对互联网金融以及科技金融的看法 内控风险数据库 软件开发角色扮演法 rman备份恢复数据库 数据库设计的六个阶段和主要任务 网络技术属于哪类税收编码 sew服务器参数调整 四川神州软件开发公司 钻块服务器 手机的服务器域名怎么设置 校园网络安全中队活动
0