SOAR基础教程

因博猪最近负责报表模块的相关的开发,虽然类似润乾、帆软这种报表工具对于大型SQL的运行做了一定的优化,但是具体优化还是需要书写者的上去了功底的,由于报表的SQL一般很复杂,再加上有一部分的因为历史原因建表的时候没有太多的关联关系,导致相关统计的时候不得不使用子查询,所以导致最后的SQL有可能会运行很久,所以博猪最近不得不的每次都在EXPLIAN的道路上摸索,理解和转化SQL分析的过程很枯燥很机械,这个是博猪经朋友推荐使用的,感觉对于SQL分析挺方便的,特此记录一下,原因无他,唯懒而已。

软件介绍

SOAR(SQL Optimizer And Rewriter)是一个对SQL进行优化和改写的自动化工具。 由小米人工智能与云平台的数据库团队开发与维护。

功能特点

  • 跨平台支持(支持Linux, Mac环境,Windows环境理论上也支持,不过未全面测试)
  • 目前只支持 MySQL 语法族协议的SQL优化
  • 支持基于启发式算法的语句优化
  • 支持复杂查询的多列索引优化(UPDATE, INSERT, DELETE, SELECT)
  • 支持EXPLAIN信息丰富解读
  • 支持SQL指纹、压缩和美化
  • 支持同一张表多条ALTER请求合并
  • 支持自定义规则的SQL改写

环境搭建

安装基本环境

下载Go

选择windows版本下载,安装。

安装完成后,cmd中输入 go version ,出现版本信息。

image.png

soar下载

GitHub地址

点击下载选择windows版本下载

eg:我放到了D:\Program Files\soar目录下面,将soar.windows-amd64重命名为soar.exe

添加环境变量,方便往后使用。

cmd中 输入 soar -version命令,出行版本信息为安装成功。

image.png

soar —help 查看帮助手册

image.png

进阶使用

相关配置

soar软件目录下面创建etc文件夹,并建立soar.yaml文件,并复制一下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# 线上环境配置
online-dsn:
addr: 127.0.0.0:3306
schema: soar-test
user: root
password: admin
disable: true
# 测试环境配置
test-dsn:
addr: 127.0.0.0:3306
schema: soar-test
user: root
password: admin
disable: true
# 是否允许测试环境与线上环境配置相同
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

运行

1
soar -query renewal_six_first_track.sql > ./renewal_six_first_track.md -test-dsn="root:admin@127.0.0.0:3306/soar-test" -allow-online-as-test

查看生成报告

SQL代码分析报告会生成一个Markdown文件,可通过Markdown文件查看SQL性能分析情况。

image.png


SOAR基础教程
https://github.com/yangxiangnanwill/yangxiangnanwill.github.io/2024/01/03/好好码代码吖/JAVA/其他/SOAR基础教程/
作者
will
发布于
2024年1月3日
许可协议