zoukankan      html  css  js  c++  java
  • sql优化工具--美团SQLAdvisor

    美团点评SQL优化工具SQLAdvisor开源

                                               介绍

    在数据库运维过程中,优化 SQL 是 DBA 团队的日常任务。例行 SQL 优化,不仅可以提升程序性能,还能够降低线上故障的概率。

    目前常用的 SQL 优化方式包括但不限于:业务层优化、SQL逻辑优化、索引优化等。其中索引优化通常通过调整索引或新增索引从而达到 SQL 优化的目的。索引优化往往可以在短时间内产生非常巨大的效果。如果能够将索引优化转化成工具化、标准化的流程,减少人工介入的工作量,无疑会大大提高DBA的工作效率。

    SQLAdvisor 是由美团点评公司北京DBA团队开发维护的 SQL 优化工具:输入SQL,输出索引优化建议。 它基于 MySQL 原生词法解析,再结合 SQL 中的 where 条件以及字段选择度、聚合条件、多表 Join 关系等最终输出最优的索引优化建议。目前 SQLAdvisor 在公司内部大量使用,较为成熟、稳定。

    现在,我们非常高兴地将 SQLAdvisor 开源,项目 GitHub 地址:https://github.com/Meituan-Dianping/SQLAdvisor 。我们已经把相关开发工作全面转到 GitHub 上,开源版本和内部使用版本保持完全一致。希望与业内有类似需求的团队,一起打造一款优秀的 SQL 优化产品。

    SQLAdvisor使用举例

    sql: SELECT id FROM crm_loan WHERE id_card = '1234567'
    cmd: ./sqladvisor -h xx -P xx -u xx -pxx -d xx -q "SELECT id FROM crm_loan WHERE id_card = '1234567'"
    SQLAdvisor输出: alter table crm_loan add index idx_id_card(id_card)
    

    SQLAdvisor快速入门教程

    SQLAdvisor的优点

    • 基于 MySQL 原生词法解析,充分保证词法解析的性能、准确定以及稳定性;
    • 支持常见的 SQL(Insert/Delete/Update/Select);
    • 支持多表 Join 并自动逻辑选定驱动表;
    • 支持聚合条件 Order by 和 Group by;
    • 过滤表中已存在的索引。

    SQLAdvisor原理介绍

    Join 处理

    1. Join语法分为两种:Join on 和 Join using,并且 Join on 有时会存在 where 条件中。
    2. 分析 Join 条件首先会得到一个 nested_join 的 table list,通过判断它的 join_using_fields 字段是否为空来区分 Join on 与 Join using。
    3. 生成的 table list 以二叉树的形式进行存储,以后序遍历的方式对二叉树进行遍历。
    4. 生成内部解析树时,right Join 会转换成 left Join。
    5. Join 条件会存在当层的叶子节点上,如果左右节点都是叶子节点,会存在右叶子节点。
    6. 每一个非叶子节点代表一次 Join 的结果。

    详细原文位置:

    http://tech.meituan.com/sqladvisor_pr.html

  • 相关阅读:
    DB数据导出工具分享
    使用批处理脚本愉快的清理缓存
    git常用命令记录
    使用bat脚本部署hexo到coding和github
    初次尝试Linux并记录一二
    js实用方法记录-指不定哪天就会用到的js方法
    js实用方法记录-简单cookie操作
    js实用方法记录-js动态加载css、js脚本文件
    使用node自动生成html并调用cmd命令提交代码到仓库
    express使用记录
  • 原文地址:https://www.cnblogs.com/cyt1153/p/6576025.html
Copyright © 2011-2022 走看看