MySQL的执行流程

一般数据库会有多个系统去请求它,之后会基于MySQL去创建一个数据库连接,但是多个系统请求一个数据库连接的时候,会出现并发问题影响效率,所以要建立一个数据库连接池,供多线程并发的使用,数据链接池具有

资源重用

更快的响应效率

实现多个系统同时去访问一个数据库

统一管理,避免了数据库资源泄露

等优点。

当有数据请求的时候

1、由线程读取网络连接中的请求数据

2、 SQL接口(SQL Interface):负责处理接收到的SQL语句

3、 查询解析器(Parser):由查询解析器将sql语句进行解析

  我们现在要从“users”表里查询数据

  查询“id”字段的值等于1的哪行数据

  对查出来的哪行数据要提取里面的“id,name,age”三个字段

4、 查询优化器(Optimeizer):选择一个最优的查询路径

理解所谓最优查询路径的意思) :
1,直接定位到"users"表中的"id"字段等于1的一行数据,然后查出来那行数据的"id,name,age"三个字段的值就可以了
2.先把"users"表中的每一行数据的"id,name,age"三个字段的值都查出来,然后从这批数据里过滤出来"id"字段等于1的那行数据的"id,name,age"三个字段

上面这就是一个最简单的SQL语句的两种实现路径,其实我们会发现,要完成这个SQL语句的目标,两个路径都可以做到,但是哪一种更好呢?显然感觉上是第一种查询路径更好一些
所以查询优化器大概就是干这个的,他会针对你编写的几十行、几百行甚至上千行的复杂SQL语句生成查询路径树,然后从里面选择一条最优的查询路径出来。
相当于他会告诉你,你应该按照一个什么样的步骤和顺序,去执行哪些操作,然后一步一步的把sQL语句就给完成了。

6、调用存储引擎接口,真正执行sql语句 

msql的存储引擎又分为多种,常见的有InnoDB、MyISAM、Memery,将数据存入内存或者磁盘

存储引擎其实就是执行SQL语句的,他会按照一定的步骤去查询内存缓存数据,更新磁盘数据,查询磁盘数据,等等,执行诸如此类的一系列的操作,如下图所示。

 7、执行器:根据执行计划调用存储引擎的接口

执行器会根据我们的优化器生成一套执行计划,然后步行的条用存储引擎的各种接口去完成SQL语句的执行计划,大致就是不停的更新或者提取一些数据出来,看下图示意

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值