1. 下载安装
- 创建soar文件目录,在soar目录下创建etc、log文件夹。
- 从 https://github.com/XiaoMi/soar/releases 下载对应的二进制文件到soar目录,改后缀为soar.exe。
2. 配置文件
在etc目录下创建soar.yaml配置文件,线上环境、测试环境地址需修改,输出格式包括html、markdown、json等,可参考 https://github.com/XiaoMi/soar/blob/master/doc/config.md 。
# 线上环境配置
online-dsn:
addr: localhost:3306
schema: world
user: root
password: root
disable: false
# 测试环境配置
test-dsn:
addr: localhost:3306
schema: world
user: root
password: root
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: log/soar.log
# 优化建议输出格式
report-type: html
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. 执行程序
支持直接输入sql语句或者读取sql文件,推荐使用读取sql文件的方式。步骤如下:
- 在命令行进入到soar目录(也可以把soar目录配置到环境变量),输入 soar -query sql文件路径 ,即可在命令行下打印分析报告。
- 输入 soar –query sql文件路径 > 保存的文件路径,即可将报告导出成文件。
Explain信息解读可参考 https://github.com/XiaoMi/soar/blob/master/doc/explain.md 。
SOAR常用命令可参考 https://github.com/XiaoMi/soar/blob/master/doc/cheatsheet.md 。