做爲DBA或系統管理員,咱們有時會遇到一個慢SQL須要優化,可是經過分析執行計劃又沒有找到好的優化思路,或者優化以後效果不明顯,沒有達到本身理想的預期,此時的你是否是很焦慮?此時你必定想若是有一個工具能幫本身rewrite SQL和獲得一些優化的建議,那該多好啊。SOAR就是你尋找的工具。SOAR,即 SQL Optimizer And Rewriter,是一款 SQL 智能優化與改寫工具,由小米運維 DBA 團隊出品,SOAR 主要由語法解析器、集成環境、優化建議、重寫邏輯、工具集五大模塊組成,相比業內其餘優秀產品有本身的優點。mysql
一、下載安裝包linux
wget https://studygolang.com/dl/golang/go1.12.5.linux-amd64.tar.gz
二、解壓文件git
tar -C /usr/local -xzf go1.12.5.linux-amd64.tar.gz
三、設置變量使之生效github
cd ~ vim .profile 在文件末尾添加以下內容: export PATH=$PATH:/usr/local/go/bin :wq source .profile
四、確認版本golang
go version
一、下載安裝包web
wget https://github.com/XiaoMi/soar/releases/download/0.9.0/soar.linux-amd64 -O /usr/local/soar
二、soar加入到通用路徑sql
cd ~ vim .bash_profile 在文件中加入以下行: .... export PATH=$PATH:/usr/local/soar/bin ....
一、下載安裝鏡像docker
docker pull becivells/soar-web
二、啓動docker數據庫
docker run -d --name soar-web -p 5077:5077 becivells/soar-web
一、瀏覽器輸入 http://xx.xx.xx.xx:5077便可進入配置界面vim
二、驗證
一、關於存儲: 全部的配置都是保存在瀏覽器 Local Storage 中的,多人之間使用是互補影響的,本身只能看到本身的配置,更換瀏覽器或者清除瀏覽器會形成配置丟失。 二、配置模板: 能夠添加多數據庫鏈接實例及配置,方便在 sql 評估的相互切換使用,具體配置項詳情見https://github.com/XiaoMi/soar/blob/master/doc/config.md 。
三、線上線下環境問題: 線上環境做爲待 sql 評估環境,soar 在進行 sql 評估時,會根據 sql 語句,從 線上環境的數據庫鏈接實例 拷貝數據表到 測試環境的數據庫鏈接實例,而後在測試環境下執行 sql 語句進行分析。所以測試環境的數據庫鏈接實例須要有最高權限。若是沒法沒有最高權限可能形成一些問題,若是沒有權限能夠啓動一個空的 mysql docker 容器做爲測試環境。若是僅僅作測試用,可將線上線下環境指定爲同樣。 四、日誌等級: 日誌等級爲 0 時不打印日誌,設置爲 1-7 時,會將 soar 產生的日誌打印至控制檯,按 F12 或右擊網頁點擊審查元素打開調試工具,點擊 Console 按鈕查看日誌。
一、SQL分析選項卡界面輸入要優化的SQL,以下圖所示:
二、點擊SQL評估以後,系統會對當前的SQL給出優化的建議,以下圖所示:
輸出說明:
查詢語句中用in代替or效果更好。
存儲IP地址建議用整數,而不是字符型,效率更高,此例中的IP地址用的是字符型。
在遇到SQL沒有優化思路時,能夠嘗試用用此工具,可能會給你不同的思路。