<a href="https://dbarobin.com/2017/03/16/test-report-of-sqladvisor/#0x00-%E7%9B%AE%E5%BD%95" target="_blank">0x00 目錄</a>
<a href="https://dbarobin.com/2017/03/16/test-report-of-sqladvisor/#0x01-sqladvisor-%E4%BB%8B%E7%BB%8D" target="_blank">0x01 SQLAdvisor 介紹</a>
<a href="https://dbarobin.com/2017/03/16/test-report-of-sqladvisor/#0x02-sqladvisor-%E5%8E%9F%E7%90%86" target="_blank">0x02 SQLAdvisor 原理</a>
<a href="https://dbarobin.com/2017/03/16/test-report-of-sqladvisor/#0x03-sqladvisor-%E6%B5%8B%E8%AF%95" target="_blank">0x03 SQLAdvisor 測試</a>
<a href="https://dbarobin.com/2017/03/16/test-report-of-sqladvisor/#31-sqladvisor-%E5%AE%89%E8%A3%85" target="_blank">3.1 SQLAdvisor 安裝</a>
<a href="https://dbarobin.com/2017/03/16/test-report-of-sqladvisor/#32-%E5%AF%BC%E5%85%A5%E6%B5%8B%E8%AF%95%E6%95%B0%E6%8D%AE" target="_blank">3.2 導入測試資料</a>
<a href="https://dbarobin.com/2017/03/16/test-report-of-sqladvisor/#33-%E6%89%A7%E8%A1%8C%E6%B5%8B%E8%AF%95" target="_blank">3.3 執行測試</a>
<a href="https://dbarobin.com/2017/03/16/test-report-of-sqladvisor/#0x04-%E7%BB%93%E8%AE%BA" target="_blank">0x04 結論</a>
<a href="https://dbarobin.com/2017/03/16/test-report-of-sqladvisor/#0x05-%E5%8F%82%E8%80%83" target="_blank">0x05 參考</a>
日期
作者
文檔概要
版本
更新曆史
2017/03/14
溫國兵
美團點評開源 SQL 優化工具 SQLAdvisor 測試報告
v1.0
文檔初稿
SQLAdvisor 是由美團點評公司北京 DBA 團隊開發維護的 SQL 優化工具:輸入 SQL,輸出索引優化建議。它基于 MySQL 原生詞法解析,再結合 SQL 中的 where 條件以及字段選擇度、聚合條件、多表 Join 關系等最終輸出最優的索引優化建議。目前 SQLAdvisor 在美團公司内部大量使用,較為成熟、穩定。[^1]
SQLAdvisor 的優點
基于 MySQL 原生詞法解析,充分保證詞法解析的性能、準确定以及穩定性;
支援常見的 SQL(Insert/Delete/Update/Select);
支援多表 Join 并自動邏輯標明驅動表;
支援聚合條件 Order by 和 Group by;
過濾表中已存在的索引。
SQLAdvisor 架構流程圖:
參考 [^2].
3.1.1 拉取最新代碼
3.1.2 安裝依賴項
3.1.3 編譯依賴項 sqlparser
3.1.4 安裝 SQLAdvisor 源碼
注:測試環境 MySQL 版本為 5.5.24-log。
為了隐私考慮,線上表名屏蔽,以 tableA 和 tableB 代替。脫敏處理的表結構如下:
導入資料量如下:
測試的語句如下:
其中 a 語句輸出資訊如下:
以上 10 個語句,平均 1s 就可以得到優化結果。
其中 alter table tableA add index idx_LID_GT(LID,GT) 就是優化建議,跟人工優化得到的結果一緻。
另外,tableB 得到優化建議 alter table gamedaylottery20170210_gift_log add index idx_LID_CL(LID,CL),也是比較理想的索引建議。
美團點評開源 SQL 優化工具 SQLAdvisor 得到的優化建議比較滿意,建議線上上試用一段時間。這個工具的成本在于需要線上上 DB 安裝相關依賴,如果确認采用,可以考慮在初始化 DB 伺服器時部署此工具。
本文轉自 liqius 51CTO部落格,原文連結:http://blog.51cto.com/szgb17/1924357,如需轉載請自行聯系原作者