阅读107 返回首页    go 阿里云 go 技术社区[云栖]


智能运维:美团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中间件如何处理针对文件请求