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

  • 相关阅读:
    TCP报文发送工具
    Java基础—注解的使用
    STM32以太网ETH
    EC20 minipcie版4g模块开发笔记
    usb端点(endpoint)知识详解
    STM32 usb_mem.c和usb_sil.c文件的分析
    USB的中断说明
    STM32 可编程电压监测器(PVD)实现数据掉电保存
    关于FSMC地址线的理解
    STM32F4—fsmc的配置步骤
  • 原文地址:https://www.cnblogs.com/cyt1153/p/6576025.html
Copyright © 2011-2022 走看看