閱讀107 返回首頁    go 小米 go 小米6


智能運維:美團SQL Advisor的自動化SQL優化實現




SQLAdvisor 是由美團點評公司北京DBA團隊開發維護的 SQL 優化工具:輸入SQL,輸出索引優化建議。 它基於 MySQL 原生詞法解析,再結合 SQL 中的 where 條件以及字段選擇度、聚合條件、多表 Join 關係等最終輸出最優的索引優化建議。目前 SQLAdvisor 在公司內部大量使用,較為成熟、穩定



640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy









上述實現時,涉及的函數為:mysql_sql_parse_join(TABLE_LIST join_table) mysql_sql_parse_join(Item join_condition) ,主要流程圖如下:


640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy



計算區分度


主要涉及的函數為:mysql_sql_parse_field_cardinality_new() 計算選擇度。


640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy



  1. 上述兩函數的流程圖如下所示:

    640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy


640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy
640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy






添加被驅動表備選索引


  1. 640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy


輸出建議


  1. 640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy






SQLAdvisor版本更新


本文來自雲棲社區合作夥伴“數據和雲”,了解相關信息可以關注“數據和雲”微信公眾號

最後更新:2017-10-24 17:04:02

  上一篇:go  zookeeper也能掛
  下一篇:go  ASP.NET Core應用針對靜態文件請求的處理[3]: StaticFileMiddleware中間件如何處理針對文件請求