docker安装使用小米SQL分析工具Soar
关注可以查看更多粉丝专享blog~
背景
做后端开发难免和数据库打交道,有时候回碰到很多特别复杂同时令人特别费解的SQL语句,让人无从下手。常规套路是取出完整SQL,理解其用意之后方能进行重构。使用EXPLAIN进行分析,调整SQL结构,去除多余的字段、关联表和导致索引失效的函数等等。
和之前介绍的Arthas一样,很早之前听说了Soar,但是一直没有接触,当需要处理的复杂SQL越来越多的时候,被迫借助工具来提升效率了。
介绍
官网简介
SOAR(SQL Optimizer And Rewriter) 是一个对 SQL 进行优化和改写的自动化工具。 由小米人工智能与云平台的数据库团队开发与维护。
功能特点
- 跨平台支持(支持 Linux, Mac 环境,Windows 环境理论上也支持,不过未全面测试)
- 目前只支持 MySQL 语法族协议的SQL优化
- 支持基于启发式算法的语句优化
- 支持复杂查询的多列索引优化(UPDATE, INSERT, DELETE, SELECT)
- 支持 EXPLAIN 信息丰富解读
- 支持 SQL 指纹、压缩和美化
- 支持同一张表多条 ALTER 请求合并
- 支持自定义规则的 SQL 改写
线路图
- 语法支持方面,目前主要依赖vitess,TiDB对SQL语法的支持。
- 目前仅针对MySQL语法族进行开发和测试,其他使用SQL的数据库产品暂不支持。
- Profiling和Trace功能有待深入挖掘,供经验丰富的DBA分析使用。
- 目前尚不支持直接线上自动执行评审通过的SQL,后续会努力支持。
- 由于暂不支持线上自动执行,因此数据备份功能也未提供。
- Vim, Sublime, Emacs等编辑器插件支持。
- Currently, only support Chinese suggestion, if you can help us add multi-language support, it will be greatly appreciated.
开始安装
使用docker安装Soar非常简单,具体操作如下:
// 拉取镜像
$ docker pull becivells/soar-web
Using default tag: latest
latest: Pulling from becivells/soar-web
4fe2ade4980c: Pull complete
7cf6a1d62200: Pull complete
bd5bf1aa7305: Pull complete
73e1cfb346e5: Pull complete
1e70e0bfa6e9: Pull complete
f3b36e3a5ffc: Pull complete
5c9bf8c43a3d: Pull complete
212188cddaef: Pull complete
Digest: sha256:a0c039bc12717e7f105de3fb21ceb4c076cc854aa57d36029602a03f4c3aee3e
Status: Downloaded newer image for becivells/soar-web:latest
docker.io/becivells/soar-web:latest
// 运行容器
$ docker run -d --name soar-web -p 5077:5077 becivells/soar-web
731af630d6f8d7fdb50f87901c244bb91ec7e487225486d32f345bcac41b7396
// 查看容器
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
731af630d6f8 becivells/soar-web "python /home/soar-w…" 35 minutes ago Up 35 minutes 0.0.0.0:5077->5077/tcp soar-web
使用Soar
访问SOAR-WEB
安装完成之后浏览器访问localhost:5077
就可以进入soar-web界面了。
SOAR配置
按提示添加配置之后即可连接数据库,在SQL分析页面对我们的SQL进行分析和建议了。
SQL分析
输入SQL语句,点击SQL评估,右侧会出现对于的评估情况,供我们进行参考。
总结
因为我也是刚刚使用,没有资格评价它的好坏,但是我认为soar从单纯的程序分析SQL的角度给我提供一些建议和提醒,是有一定的参考价值的,可能最后我不一定会用到这些建议,但是工具的价值就在于我们如何使用。后面深度使用之后再跟大家分享心得体会。
一起加电!
共勉~