SQLAdvisor简明教程

2017-03-13 11:49:52
简介

SQLAdvisor是由美团点评公司技术工程部DBA团队(北京)开发维护的一个分析SQL给出索引优化建议的工具。它基于MySQL原生态词法解析,结合分析SQL中的where条件、聚合条件、多表Join关系 给出索引优化建议
主要功能:输出SQL索引优化建议

SQLAdvisor安装
  • 安装依赖项

    1
    2
    3
    4
    5
    1. 配置percona56 yum源: 
    yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm

    2. yum | apt-get install cmake libaio-devel libffi-devel glib2 glib2-devel
    3. yum | apt-get install --enablerepo=Percona56 Percona-Server-shared-56
  • 拉取最新代码

    1
    git clone https://github.com/Meituan-Dianping/SQLAdvisor.git
  • 编译依赖项sqlparser

    1
    2
    3
    4
    5
    6
    7
    1. cmake -DBUILD_CONFIG=mysql_release -DCMAKE_BUILD_TYPE=debug -DCMAKE_INSTALL_PREFIX=/usr/local/sqlparser ./
    2. make && make install

    编译sqladvisor时依赖perconaserverclient_r, 因此需要安装Percona-Server-shared-56
    有可能需要配置软链接例如:
    1. cd /usr/lib64/
    2. ln -s libperconaserverclient_r.so.18 libperconaserverclient_r.so
  • 安装SQLAdvisor源码

    1
    2
    3
    4
    1. cd SQLAdvisor/sqladvisor/
    2. cmake -DCMAKE_BUILD_TYPE=debug ./
    3. make
    4. 在本路径下生成一个sqladvisor可执行文件,这即是我们想要的。
SQLAdvisor使用
  • –help输出

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    [root@localhost sqladvisor]# ./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
  • 命令行传参调用

    1
    2
    3
    ./sqladvisor -h xx  -P xx  -u xx -p 'xx' -d xx -q "sql" -v 1

    注意:命令行传参时,参数名与值需要用空格隔开
  • 配置文件传参调用

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $> cat sql.cnf
    [sqladvisor]
    username=xx
    password=xx
    host=xx
    port=xx
    dbname=xx
    sqls=sql1;sql2;sql3....

    cmd: ./sqladvisor -f sql.cnf -v 1
常见错误FAQ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
我已经安装了libaio-devel库:
-- Running cmake version 2.8.12.2
CMake Error at cmake/build_configurations/mysql_release.cmake:46 (MESSAGE):
aio is required on Linux, you need to install the required library:
Debian/Ubuntu: apt-get install libaio-dev
RedHat/Fedora/Oracle Linux: yum install libaio-devel
SuSE: zypper install libaio-devel
If you really do not want it, pass -DIGNORE_AIO_CHECK to cmake.
Call Stack (most recent call first):
CMakeLists.txt:131 (INCLUDE)

原因:刚开始第一次执行cmake的时候就产生了CMakeCache.txt,
这个时候我并没有安装libaio-devel库,
然后继续安装依赖库后再执行cmake其实读取的依然是前面生成的cache文件,
导致cmake判断libaio-devel一直未被安装。

解决:我们rm删除CMakeCache.txt文件后重新执行cmake命令

ref
QUICK_START
THEORY_PRACTICES


您的鼓励是我写作最大的动力

俗话说,投资效率是最好的投资。 如果您感觉我的文章质量不错,读后收获很大,预计能为您提高 10% 的工作效率,不妨小额捐助我一下,让我有动力继续写出更多好文章。