MySQL执行顺序

MySQL执行顺序

本章详细介绍,一条mysql语句是如何执行,面试中也是高频问点,一条sql语句会经过创建连接、查询缓存、解析器、优化器、存储引擎几个过程。

1、创建连接

客户端和服务端建立连接的方式大致分为如下几种:
(1) TCP/IP
(2) 命名管道
(3) 共享内存
(4) UNIX域套接字

客户端和服务服务端创建一个连接,服务端此时会创建一个线程处理和这个客户端的交互工作,若客户端和服务端断开连接,不会立即将此线程销毁,而是进行缓存,这时当其他客户端再进行连接的时候,会把这个线程分配给其他客户端,此方式避免重复创建,减少开销。

2、查询缓存

MySQL会将已经查询过的sql语句进行缓存,若其他客户端或者当前客户端再次进行查询相同的sql语句时候会从缓存中查找。但是以下几种情况除外:
(1)包含某些系统函数(如:NOW())
(2)用户自定义变量和函数
(3)系统表:mysql、information_schema、performance_shcama
(4)相同的语句但是出现一些空格、注释、大小写等
(5)表的结构或者数据被修改,如:增/删/改/查 truncate/alter/drop table 、drop database
需要注意的是:查询缓存虽然有助于提升性能,但会造成系统维护内存区域,MySQL8.0中直接删除

3、解析器

若缓存没有命中,就会对查询语句进行解析,主要分为词法/语法解析,经常我们执行sql语句报语法错误就是在这个阶段

4、优化器

MySQL自动会将编写sql语句进行优化,如表达式简化、外连接转内连接,具体可以查询explain查看

5、存储引擎

负责对数的存储和提取,简单来讲就是如何把数据写入到物理存储器上面去
MySQL分为两层:server和存储引擎层
(1)server:连接器、查询缓存、解析器、优化器
(2)存储引擎:真实数据存取的功能区域

server 层判断某条数据符合要求,会fang到缓冲区直至缓冲区满,才返给客户端真正的记录 可以通过 net_buffer_length 设置

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值