Mysql drop table 原理_Mysql-原理浅析篇

本文详细介绍了MySQL的架构、查询过程、SQL执行顺序以及使用explain进行执行计划解析。从架构上,MySQL分为三层:CS架构、核心服务层和存储引擎层。查询过程包括客户端发送请求、服务器解析、预处理、生成执行计划和执行。SQL执行顺序遵循特定的规则,如FROM、ON、WHERE等。通过explain关键字,可以分析SQL的执行计划,了解表的读取顺序、操作类型、索引使用等信息,帮助优化查询性能。
摘要由CSDN通过智能技术生成

一、mysql架构

逻辑架构

MySQL各组件之间协同工作逻辑架构图,如下:

c441a60475cc

-最上层是基本的CS架构,主要做连接处理、授权认证、安全等等

-中间层是MySQL的核心服务,包括查询解析、分析、优化、缓存及所有的内置函数,所有跨存储引擎的功能也是在这层实现:如存储过程、触发器、视图等

-最下层是负责数据的存储和提取的存储引擎,不同存储引擎各有优劣。服务器是通过API与存储引擎进行通信的。正常情况下,存储引擎是不会解析SQL的(InnoDB有些例外,如果它会解析外键定义),不同存储引擎之间也不会互相通信的

二、查询过程

查询流程

从下图我们可以看到MySQL是怎样处理一个请求的:

c441a60475cc

客户端发送一条查询给服务器

服务器先检查查询缓存,如果命中了缓存,则立即返回存储在缓存中的结果。否则进入下一阶段

服务器端进行SQL解析、预处理,再由优化器生成对应的执行计划

MySQL根据优化器生成的执行计划,调用存储引擎的API来执行查询

将结果返回给客户端

三、sql执行顺序

sql语句的执行顺序

(8)SELECT (9)DISTINCT  (11) 

(1)FROM [left_table]

(3) JOIN 

(2)ON 

(4)WHERE 

(5)GROUP BY 

(6)WITH 

(7)HAVING 

(10)ORDER BY 

FROM:对FROM子句中的前两个表执行笛卡尔积(Cartesian product)(交叉联接),生成虚拟表VT1

ON:对VT1应用ON筛选器。只有那些使为真的行才被插入VT2。

OUTER(JOIN):如 果指定了OUTER JOIN(相对于CROSS JOIN 或(INNER JOIN),保留表(preserved table:左外部联接把左表标记为保留表,右外部联接把右表标记为保留表,完全外部联接把两个表都标记为保留表)中未找到匹配的行将作为外部行添加到 VT2,生成VT3.如果FROM子句包含两个以上的表,则对上一个联接生成的结果表和下一个表重复执行步骤1到步骤3,直到处理完所有的表为止。

WHERE:对VT3应用WHERE筛选器。只有使为true的行才被插入VT4.

GROUP BY:按GROUP BY子句中的列列表对VT4中的行分组,生成VT5.

CUBE|ROLLUP:把超组(Suppergroups)插入VT5,生成VT6.

HAVING:对VT6应用HAVING筛选器。只有使为true的组才会被插入VT7.

SELECT:处理SELECT列表,产生VT8.

DISTINCT:将重复的行从VT8中移除,产生VT9.

ORDER BY:将VT9中的行按ORDER BY 子句中的列列表排序,生成游标(VC10).

TOP:从VC10的开始处选择指定数量或比例的行,生成表VT11,并返回调用者。

四、执行计划解析

前言:explain(执行计划),使用explain关键字可以模拟优化器执行sql查询语句,从而知道MySQL是如何处理sql语句。explain主要用于分析查询语句或表结构的性能瓶颈。

注:本系列随笔如无特殊说明都MySQL版本都为5.7.22。

1.explain的作用

通过explain+sql语句可以知道如下内容:

①表的读取顺序。(对应id)

②数据读取操作的操作类型。(对应select_type)

③哪些索引可以使用。(对应possible_keys)

④哪些索引被实际使用。(对应key)

⑤表直接的引用。(对应ref)

⑥每张表有多少行被优化器查询。(对应rows)

2.explain包含的信息

explain使用:explain+sql语句,通过执行explain可以获得sql语句执行的相关信息。

c441a60475cc

下面对explain的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值