CentOS7 安装SQLAdvisor(SQL优化工具)

1.SQLAdvisor简介

在数据库运维过程中,优化SQL是业务团队与DBA团队的日常任务。例行SQL优化,不仅可以提升程序性能,还能够降低线上故障的概率。

目前常用的SQL优化方式包括但不限于:业务层优化、SQL逻辑优化、索引优化等。其中索引优化通常通过调整索引或新增索引从而达到SQL优化的目的。索引优化往往可以在短时间内产生非常巨大的效果。如果能够将索引优化转化成工具化、标准化的流程,减少人工介入的工作量,无疑会大大提高DBA的工作效率

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

美团点评致力于将SQLAdvisor打造成一款高智能化SQL优化工具,选择将已经在公司内部使用较为成熟的、稳定的SQLAdvisor项目开源,github地址。希望与业内有类似需求的团队,一起打造一款优秀的SQL优化产品。

SQLAdvisor架构流程图

1.jpg

2.安装与配置

1)首先,安装依赖软件包

# yum  install cmake libaio-devel libffi-devel glib2 glib2-devel
# yum  install --enablerepo=Percona56 Percona-Server-shared-56

2)下载源码

git clone https://github.com/Meituan-Dianping/SQLAdvisor.git

注意

  1. 跟据glib安装的路径,修改SQLAdvisor/sqladvisor/CMakeLists.txt中的两处include_directories针对glib设置的path。glib yum 安装默认不需要修改路径
  2. 编译sqladvisor时依赖perconaserverclient_r, 因此需要安装Percona-Server-shared-56。有可能需要配置软链接如下:
# cd /usr/lib64/ 
# ln -s libperconaserverclient_r.so.18 libperconaserverclient_r.so

     3. 有可能需要配置percona56 yum源: yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm

# wget http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm

# yum install percona-release-0.1-3.noarch.rpm

# yum install Percona-Server-shared-56

3)编译依赖项sqlparser

# cmake -DBUILD_CONFIG=mysql_release -DCMAKE_BUILD_TYPE=debug -DCMAKE_INSTALL_PREFIX=/usr/local/sqlparser ./
# make && make install

注意

  1. DCMAKE_INSTALL_PREFIX为sqlparser库文件和头文件的安装目录,其中lib目录包含库文件libsqlparser.so,include目录包含所需的所有头文件。
  2. DCMAKE_INSTALL_PREFIX值尽量不要修改,后面安装依赖这个目录。

4)安装SQLAdvisor源码

# cd SQLAdvisor/sqladvisor/
# cmake -DCMAKE_BUILD_TYPE=debug ./
# make              # 在本路径下生成一个sqladvisor可执行文件,这即是我们想要的。

3.SQLAdvisor使用

1)--help输出

# ./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 -h xx  -P xx  -u xx -p 'xx' -d xx -q "sql" -v 1

注意:命令行传参时,参数名与值需要用空格隔开

3)配置文件传参调用

# 编辑配置文件
# vim sql.cnf
[sqladvisor]
username=xx
password=xx
host=xx
port=xx
dbname=xx
sqls=sql1;sql2;sql3....

# 应用配置文件
# ./sqladvisor -f sql.cnf  -v 1

4)测试验证实例

# cp /usr/local/src/SQLAdvisor/sqladvisor/sqladvisor /usr/bin/sqladvisor

# sqladvisor -h 127.0.0.1  -P 3306  -u root -p '123456' -d test -q "sql语句" -v 1

通过配置文件简化命令调用

#vim /etc/sql.cnf

[sqladvisor]

username=xxx

password=xxx

host=xxx

port=xxx

dbname=xxx

#sqladvisor -f /etc/sql.cnf -q "sql语句" -v 1

至此,SQLAdvisor安装与配置完成!

使用时需要注意的问题:

Q1: SQLAdvisor支持哪些SQL

insert、update、delete、select、insert select 、select join、update t1 t2 等常见SQL有支持

Q2: SQLAdvisor需要注意的地方

  • SQL中的子查询、or条件、使用函数的条件 会忽略不处理。
  • 命令行传入sql参数时,注意sql中的双引号、反引号 都需要用\转义。建议使用配置文件形式调用

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值