一条sql语句的执行过程

一条sql语句在提交之后经历了哪些过程:

1. 客户端与服务端通讯(验证登陆状态)
2. 检查缓存器,服务器会检测是否命中缓存。命中会直接将结果返回客户端,否则进入下一步骤
3. 解析sql语句,预处理
4. 优化器优化sql语句
5. 调用存储引擎的API来执行查询
6. 返回给客户端

一 、 在进行sql操作前,需要进行认证 :

mysql -uroot -p

二 、缓存器

在解析sql语句前,如果查询缓存是打开的,mysql会优先查询是否命中查询缓存中的数据。这个过程是通过大小写敏感的哈希实现,但只要有一个字节不匹配,就匹配不到,进入下一过程。

三、sql的解析和预处理

  • mysql首先会根据 sql语句的关键字 将sql解析为一颗“sql树”。mysql解析器将使用语法规则验证和解析查询;预处理则根据一些mysql规则进一步检查解析 “树” 是否合法.

四 、优化器

当语法树被认为是合法的了,且由优化器将其转换成执行计划。一条查询有多种执行方式,优化器会选择最好的执行计划

五、 查询执行引擎

这里引擎指的就是 :myisam、innodb、memory等的搜索引擎。执行计划的过程中需要通过调用存储擎的接口来实现。mysql只需重复执行计划中的操作,知道完成所有的查询

六、返回客户端

执行查询的最后一个过程是将结果返回给客户端,即使不需要返回查询结果,也会返回客户端一些查询信息,如果过程需要被缓存,这个过程也会将数据存储到缓存中。
mysql的返回结果是一个增量、逐步的过程。这样的过程有两个好处,服务端无需存储太多结果,也不需要担心返回的结果太大而消耗太多内存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jayLog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值