做为DBA或系统管理员,咱们有时会遇到一个慢SQL须要优化,可是经过分析执行计划又没有找到好的优化思路,或者优化以后效果不明显,没有达到本身理想的预期,此时的你是否是很焦虑?此时你必定想若是有一个工具能帮本身rewrite SQL和获得一些优化的建议,那该多好啊。SOAR就是你寻找的工具。SOAR,即 SQL Optimizer And Rewriter,是一款 SQL 智能优化与改写工具,由小米运维 DBA 团队出品,SOAR 主要由语法解析器、集成环境、优化建议、重写逻辑、工具集五大模块组成,相比业内其余优秀产品有本身的优点。mysql
一、下载安装包linux
wget https://studygolang.com/dl/golang/go1.12.5.linux-amd64.tar.gz
二、解压文件git
tar -C /usr/local -xzf go1.12.5.linux-amd64.tar.gz
三、设置变量使之生效github
cd ~ vim .profile 在文件末尾添加以下内容: export PATH=$PATH:/usr/local/go/bin :wq source .profile
四、确认版本golang
go version
一、下载安装包web
wget https://github.com/XiaoMi/soar/releases/download/0.9.0/soar.linux-amd64 -O /usr/local/soar
二、soar加入到通用路径sql
cd ~ vim .bash_profile 在文件中加入以下行: .... export PATH=$PATH:/usr/local/soar/bin ....
一、下载安装镜像docker
docker pull becivells/soar-web
二、启动docker数据库
docker run -d --name soar-web -p 5077:5077 becivells/soar-web
一、浏览器输入 http://xx.xx.xx.xx:5077便可进入配置界面vim
二、验证
一、关于存储: 全部的配置都是保存在浏览器 Local Storage 中的,多人之间使用是互补影响的,本身只能看到本身的配置,更换浏览器或者清除浏览器会形成配置丢失。 二、配置模板: 能够添加多数据库链接实例及配置,方便在 sql 评估的相互切换使用,具体配置项详情见https://github.com/XiaoMi/soar/blob/master/doc/config.md 。
三、线上线下环境问题: 线上环境做为待 sql 评估环境,soar 在进行 sql 评估时,会根据 sql 语句,从 线上环境的数据库链接实例 拷贝数据表到 测试环境的数据库链接实例,而后在测试环境下执行 sql 语句进行分析。所以测试环境的数据库链接实例须要有最高权限。若是没法没有最高权限可能形成一些问题,若是没有权限能够启动一个空的 mysql docker 容器做为测试环境。若是仅仅作测试用,可将线上线下环境指定为同样。 四、日志等级: 日志等级为 0 时不打印日志,设置为 1-7 时,会将 soar 产生的日志打印至控制台,按 F12 或右击网页点击审查元素打开调试工具,点击 Console 按钮查看日志。
一、SQL分析选项卡界面输入要优化的SQL,以下图所示:
二、点击SQL评估以后,系统会对当前的SQL给出优化的建议,以下图所示:
输出说明:
查询语句中用in代替or效果更好。
存储IP地址建议用整数,而不是字符型,效率更高,此例中的IP地址用的是字符型。
在遇到SQL没有优化思路时,能够尝试用用此工具,可能会给你不同的思路。