作为一名优秀的DBA或系统管理员,工作总是充满各种“艰辛”!
![](/uploads/a51d1612-23a1-425a-ac39-0977aa9fcb63.jpg)
你在工作中是否遇到过这样的情况:有一个慢SQL需要优化,但是通过分析执行计划又没有找到好的优化思路,或者优化之后效果不明显,没有达到自己理想的预期…不知道如何是好!
好想有个小工具可以帮助我找到慢SQL~
众里寻它千百度,它在Github海洋最深处!
今天老王就给大家推荐一个实用的工具,不仅能帮助你 rewrite SQL并且能给出一些优化的建议。
![](/uploads/2ee74ce8-0aae-4821-a1cb-0085d256fbfa.jpg)
SOAR,即 SQL Optimizer And Rewriter,是一款 SQL 智能优化与改写工具,由小米运维 DBA 团队出品,SOAR 主要由语法解析器、集成环境、优化建议、重写逻辑、工具集五大模块组成,相比业内其他优秀产品有自己的优势。
![](/uploads/35b87dc1-8f4b-4e46-b548-d08a65ff305a.jpg)
功能特点
- 跨平台支持(支持Linux, Mac环境,Windows环境理论上也支持,不过未全面测试)
- 目前只支持 MySQL 语法族协议的SQL优化
- 支持基于启发式算法的语句优化
- 支持复杂查询的多列索引优化(UPDATE, INSERT, DELETE, SELECT)
- 支持EXPLAIN信息丰富解读
- 支持SQL指纹、压缩和美化
- 支持同一张表多条ALTER请求合并
- 支持自定义规则的SQL改写
![](/uploads/70677a8d-c0c1-49e8-b099-554b38bbb8b0.jpg)
使用示例
下面举例演示下实际的使用效果。
1、SQL分析选项卡界面输入要优化的SQL,如下图所示:
![](/uploads/721b8e78-74ca-4281-82c9-f3fe33cac15e.jpg)
2、点击SQL评估之后,系统会对当前的SQL给出优化的建议,如下图所示:
![](/uploads/a957fc06-97d2-400c-b2d5-225f5e3ceab8.jpg)
![](/uploads/b7499a18-8bf4-4569-8cde-3adb31b5dff5.jpg)
输出说明:
- 查询语句中用in代替or效果更好。
- 存储IP地址建议用整数,而不是字符型,效率更高,此例中的IP地址用的是字符型。
SOAR 安装
实用的Soar安装配置起来也非常的简单!
1.1、先安装go语言环境
1、下载安装包
wget tar .gz
2、解压文件
tar -C /usr/local -xzf go1.12.5.linux-amd64.tar.gz
3、设置变量使之生效
cd ~
vim .profile
在文件末尾添加如下内容:
export PATH=$PATH:/usr/local/go/ bin
:wq
source .profile
4、确认版本
go version
1.2 安装soar
1、下载安装包
wget -O /usr/local/soar
2、soar加入到通用路径
cd ~ vim .bash_profile 在文件中加入如下行: .... export PATH=$PATH:/usr/local/soar/bin ....
![](/uploads/65c98954-95e5-4e8d-9a63-c32488f2c236.jpg)
1.3 安装soar web界面
1.3.1安装
1、下载安装镜像
docker pull becivells/soar-web
2、启动docker
docker run -d --name soar-web -p 5077:5077 becivells/soar-web
1.3.2 访问及配置
1、浏览器输入 即可进入配置界面
![](/uploads/27296a03-9e34-4a1a-9443-f9d3fae27488.jpg)
2、验证
![](/uploads/78b865d6-304e-496c-9bd2-d8d0456c4d1c.jpg)
1.3.3 配置说明及注意事项
配置的部分有一些需要大家注意的细节点:
![](/uploads/65c25f66-8eaa-4df1-8c13-a77b59f56617.jpg)
Github地址:
总结
在遇到SQL没有优化思路时,可以尝试用用此工具,可能会给你不一样的思路。
网站崩溃找不到原因?平台搭建无从下手?热门技术不想落伍?想要变强找不到资料?
加入[IT拯救联盟],让大牛和同伴拯救你,带你装x带你飞。定期干货分享、大牛专业解答、实用IT工具优选…..
私信小编“联盟”,即可加入我们~