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,如果有版本信息,说明下载安装成功。
1655433471080-1655438576345.png

2、select.sql

创建select.sql文件,文件中放置你要分析的sql语句。
1655433732864-1655438625323.png

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文件。

成功之后,结果如下:
1655435441339-1655438665164.png

输出的文件可以为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
1655436531298-1655438752415.png

下载完之后,解压,里面有一份requirement.txt文件,里面写了使用soar-web所需的依赖。

打开cmd命令窗口,输入pip install -r requirement.txt下载安装依赖。

之后,在soar-web的文件夹里,双击run.bat文件,即可运行soar-web。

在浏览器上输入 http://127.0.0.1:5077 进行访问。
1655436927175-1655443542371.png

2、配置

点击SOAR配置,填写相关配置信息
1655437020116-1655443426623.png

3、运行

点击SQL分析,配置模板选择我们刚刚创建的配置。输入sql语句,然后点击sql评估,即可完成分析。
1655437108924-1655443468244.png

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 版本信息。


版权声明:本文为weixin_45866737原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>