因博猪最近负责报表模块的相关的开发,虽然类似润乾、帆软这种报表工具对于大型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 ,出现版本信息。
soar下载
GitHub地址
点击下载选择windows版本下载
eg:我放到了D:\Program Files\soar
目录下面,将soar.windows-amd64重命名为soar.exe
添加环境变量,方便往后使用。
cmd中 输入 soar -version命令,出行版本信息为安装成功。
soar —help 查看帮助手册
进阶使用
相关配置
在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
log-level: 7 log-output: etc/soar.log
report-type: markdown ignore-rules: - ""
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-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性能分析情况。