分析SQL給出索引優化建議的工具(美團開源)
分析SQL給出索引優化建議的工具(美團開源)
SQLAdvisor是由美團點評公司技術工程部DBA團隊(北京)開發維護的一個分析SQL給出索引優化建議的工具。它基于MySQL原生態詞法解析,結合分析SQL中的where條件、聚合條件、多表Join關系 給出索引優化建議。目前SQLAdvisor在美團點評內部廣泛應用,公司內部對SQLAdvisor的開發全面轉到github上,開源和內部使用保持一致。
主要功能:輸出SQL索引優化建議
安裝測試的詳細過程
開源介紹
https://www.oschina.net/news/82725/sqladvisor-opensource?from=20170312
下載地址
https://github.com/Meituan-Dianping/SQLAdvisor/
1. SQLAdvisor安裝
以redhat6系統為例
1.1 拉取最新代碼
前提是聯網,已安裝git工具(yum install git)
git clone https://github.com/Meituan-Dianping/SQLAdvisor.git
1.2 安裝依賴項
1.2.1. yum install cmake libaio-devel libffi-devel glib2 glib2-devel
1.2.2. 配置percona56 yum源:
yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
yum install --enablerepo=Percona56 Percona-Server-shared-56
##Percona56 是yum中配置的名字
1.2.3.配置軟鏈接
1. cd /usr/lib64/
2. ln -s libperconaserverclient_r.so.18 libperconaserverclient_r.so
注意
1.跟據glib安裝的路徑,修改SQLAdvisor/sqladvisor/CMakeLists.txt中的兩處include_directories針對glib設置的path。glib yum 安裝默認不需要修改路徑
2.編譯sqladvisor時依賴perconaserverclient_r, 因此需要安裝Percona-Server-shared-56。
1.3 編譯依賴項sqlparser
1. cmake -DBUILD_CONFIG=mysql_release -DCMAKE_BUILD_TYPE=debug -DCMAKE_INSTALL_PREFIX=/usr/local/sqlparser ./
2. make && make install
注意
DCMAKE_INSTALL_PREFIX為sqlparser庫文件和頭文件的安裝目錄,其中lib目錄包含庫文件libsqlparser.so,include目錄包含所需的所有頭文件。
DCMAKE_INSTALL_PREFIX值盡量不要修改,后面安裝依賴這個目錄。
1.4 安裝SQLAdvisor源碼
1. cd SQLAdvisor/sqladvisor/
2. cmake -DCMAKE_BUILD_TYPE=debug ./
3. make
4. 在本路徑下生成一個sqladvisor可執行文件,這即是我們想要的。
2. SQLAdvisor使用
2.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.2 命令行傳參調用
./sqladvisor -h xx -P xx -u xx -p 'xx' -d xx -q "sql" -v 1
注意:命令行傳參時,參數名與值需要用空格隔開
2.3 配置文件傳參調用
把連接信息寫到sql.cnf中,就不用每次都輸入用戶名密碼之類的,也可以把要優化的sql也寫入
$> 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
個人測試圖例
配置文件
過程
個人整理,因水平有限,發現錯誤可以評論批評指正,一定虛心修改!