本文已参加「新人创作礼」活动,一起开启掘金创作之路
- soar下载安装
- 下载使用下载地址
- windows下将文件重命名为soar.exe,linux下赋予执行权限
3. 在soar同级目录下创建etc文件夹,创建soar.yaml (不配置也行,会少了EXPLAIN分析)
```yaml
# 线上环境配置
online-dsn:
addr: 127.0.0.1:3306
schema: compstore2
user: root
password: 123456
disable: false
# 测试环境配置
test-dsn:
addr: 127.0.0.1:3306
schema: compstore2
user: root
password: 123456
disable: false
# 是否允许测试环境与线上环境配置相同
allow-online-as-test: true
# 是否清理测试时产生的临时文件
drop-test-temporary: true
# 语法检查小工具
only-syntax-check: false
sampling-statistic-target: 100
sampling: false
# 日志级别,[0:Emergency, 1:Alert, 2:Critical, 3:Error, 4:Warning, 5:Notice, 6:Informational, 7:Debug]
log-level: 7
log-output: etc/soar.log
# 优化建议输出格式
report-type: markdown
ignore-rules:
- ""
# 黑名单中的 SQL 将不会给评审意见。一行一条 SQL,可以是正则也可以是指纹,填写指纹时注意问号需要加反斜线转义。
blacklist: etc/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
```
3. 使用
1. 给出优化建议(windows下无法使用echo)`soar.exe -query sql.sql`

2. 美化sql `type .\sql.sql |.\soar.exe -report-type=pretty`

4. 可视化soar-web安装
1. 克隆项目[soar-web项目](https://github.com/xiyangxixian/soar-web.git)
2. 安装python环境(安装步骤省略) 我这里用的目前最新的3.9.5
3. 安装依赖`pip install Flask pymysql pycryptodome`
4. 启动用脚本或者手动都行`python .\soar-web.py`
5. 打开浏览器访问`http://127.0.0.1:5077`就行
5. 可视化soar-web使用
1. 配置(不配置也行,会少了EXPLAIN分析)

2. 评估,美化,压缩,其他大家按需求使用

6.参考
[小米SOAR工具使用说明(Windows)](https://blog.csdn.net/m0_37524586/article/details/88351728)
[soar项目](https://github.com/XiaoMi/soar)
[soar-web项目](https://github.com/xiyangxixian/soar-web)