soar SQL分析工具与soar-web可视化
soar
介绍: SOAR(SQL Optimizer And Rewriter)是一个对SQL进行优化和改写的自动化工具。 由小米人工智能与云平台的数据库团队开发与维护。
soar文档:https://github.com/XiaoMi/soar/tree/master
1、下载
下载:https://github.com/XiaoMi/soar/releases
选择soar.windows-amd64
下载到本地。
来到文件的安装目录,打开cmd命令窗口,输入soar.windows-amd64 -version
,如果有版本信息,说明下载安装成功。
2、select.sql
创建select.sql文件,文件中放置你要分析的sql语句。
3、soar.yaml配置文件
创建soar.yaml配置文件:
# 线上环境配置
online-dsn:
addr: 127.0.0.1:3306
schema: person #填写数据库名,如果数据库源没有配置好,那么分析的报告中是不会有explain信息的
user: root
password: 123456
disable: false
# 测试环境配置
test-dsn:
addr: 127.0.0.1:3306
schema: person #填写数据库名
user: root
password: 123456
disable: false
# 是否允许测试环境与线上环境配置相同
allow-online-as-test: true
# 是否清理测试时产生的临时文件
drop-test-temporary: true
# 语法检查小工具
only-syntax-check: false
sampling-statistic-target: 100
sampling: true
# 日志级别,[0:Emergency, 1:Alert, 2:Critical, 3:Error, 4:Warning, 5:Notice, 6:Informational, 7:Debug]
log-level: 7
log-output: ./soar.log
# 优化建议输出格式
report-type: markdown #可以为markdown和html
ignore-rules:
- ""
# 黑名单中的 SQL 将不会给评审意见。一行一条 SQL,可以是正则也可以是指纹,填写指纹时注意问号需要加反斜线转义。
blacklist: ${your_config_dir}/soar.blacklist
# 启发式算法相关配置
max-join-table-count: 5
max-group-by-cols-count: 5
max-distinct-count: 5
max-index-cols-count: 5
max-total-rows: 9999999
spaghetti-query-length: 2048
allow-drop-index: false
# EXPLAIN相关配置
explain-sql-report-type: pretty
explain-type: extended
explain-format: traditional
explain-warn-select-type:
- ""
explain-warn-access-type:
- ALL
explain-max-keys: 3
explain-min-keys: 0
explain-max-rows: 10000
explain-warn-extra:
- ""
explain-max-filtered: 100
explain-warn-scalability:
- O(n)
query: ""
list-heuristic-rules: false
list-test-sqls: false
verbose: true
默认文件会按照/etc/soar.yaml
, ./etc/soar.yaml
, ./soar.yaml
顺序加载,找到第一个后不再继续加载后面的配置文件。如需指定其他配置文件可以通过-config
参数指定。
在windows中,将soar.yaml配置文件放置在soar.windows-amd64
文件同级目录下即可。
可以通过soar.windows-amd64 -h
查看配置的解释。
注意:
(1)如果数据库源没有配置好,那么分析的报告中是不会有explain信息的
(2)建议将数据采样打开:sampling: true
(3)配置好soar的日志路径:log-output: ./soar.log
4、运行
打开该级目录下的cmd命令窗口,输入soar.windows-amd64 -query=select.sql > report.md
-query=select.sql
表示我要分析的是哪份文件里的sql,report.md
表示将报告输出成report.md文件。
成功之后,结果如下:
输出的文件可以为markdown格式与html模式,可在配置文件中更改,然后修改输出文件的后缀即可。
创建start.bat命令文件
将soar.windows-amd64 -query=select.sql > report.md
保存,以后只需要修改select.sql文件里的内容,然后双击start.bat
文件即可输出sql分析报告。
soar-web可视化工具
介绍:基于小米 soar 的开源 sql 分析与优化的 web 图形化工具,支持 soar 配置的添加、修改、复制,多配置切换,配置的导出、导入与导入功能。
https://github.com/xiyangxixian/soar-web
1、下载安装
首先,该可视化工具是用python写的,所以你的主机上需要有安装python3.X
然后,下载源包,https://github.com/xiyangxixian/soar-web/releases
下载完之后,解压,里面有一份requirement.txt
文件,里面写了使用soar-web所需的依赖。
打开cmd命令窗口,输入pip install -r requirement.txt
下载安装依赖。
之后,在soar-web的文件夹里,双击run.bat
文件,即可运行soar-web。
在浏览器上输入 http://127.0.0.1:5077 进行访问。
2、配置
点击SOAR配置,填写相关配置信息
3、运行
点击SQL分析,配置模板选择我们刚刚创建的配置。输入sql语句,然后点击sql评估,即可完成分析。
4、配置
如果需要改 IP 地址和端口号, 可在 config.py 中进行修改。
5、功能相关
关于存储: 所有的配置都是保存在浏览器 Local Storage 中的,多人之间使用是互不影响的,自己只能看到自己的配置,更换浏览器或者清除浏览器会造成配置丢失。
关于加密: 配置信息在发送给服务端前会进行 RSA 和 AES 加密,防止配置信息被窃取。
配置模板: 可以添加多数据库连接实例及配置,方便在 sql 评估时切换使用,具体配置项详情见 https://github.com/XiaoMi/soar/blob/master/doc/config.md 。
数据库连接: 数据库连接成功后,soar 可以通过表结构提供更正确优质的 sql 评估建议, 配置的正确性决定了 soar 的服务质量。
线上线下环境问题: 线上环境作为待 sql 评估环境,soar 在进行 sql 评估时,会根据 sql 语句,从 线上环境的数据库连接实例 拷贝数据表到 测试环境的数据库连接实例,然后在测试环境下执行 sql 语句进行分析。因此测试环境的数据库连接实例需要有最高权限。如果没有最高权限可能造成一些问题,如果没有权限可以启动一个空的 mysql docker 容器作为测试环境。如果仅仅做测试用,可将线上线下环境指定为一样。
日志等级: 日志等级为 0 时不打印日志,设置为 1-7 时,会将 soar 产生的日志打印至控制台,按 F12 或右击网页点击审查元素打开调试工具,点击 Console 按钮查看日志。
soar 版本: 打开控制台输入:soarVersion(),可查看 soar 版本信息。