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:
# 是否允許測試環境與線上環境配置相同
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 。
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 。