查询sql的执行流程-MYSQL

在这里插入图片描述

连接器

管理现有数据库连接,做权限校验

建立连接的过程是比较复杂的,建议是在使用中要尽量减少建立连接的动作(所以现场有很多连接池技术提供,阿里的、C3P0等等),也就是尽量使用长连接。但是全部使用长连接后,有些时候 MySQL 占用内存涨得特别快,因为 MySQL 在执行过程中临时使用的内存是管理在连接对象里面的。这些资源会在连接断开的时候才释放。所以如果长连接累积下来,可能导致内存占用太大,被系统强行杀掉(OOM),从现象看就是 MySQL 异常重启了。

查询缓存

为了提升数据库的性能,往往都会想到缓存技术。比如 MyBatis 有着自己的缓存技术。还有现在流行的 Redis 。而 MySQL 也有着自己的缓存,可以把查询过的数据缓存在内存中,以 Key-Value 的方式,key是一个哈希值,是通过查询SQL、当前要查询的数据库、客户端协议版本等,生成的一个哈希值,而value自然就是查询结果。每次查询的时候,在缓存中查找。
但是,不建议使用,因为往往对表的更新,会把该表对应的缓存都进行删除。那么好不容易建立起来的缓存,就没了。并且在 MySQL 8.0 的版本中,已经不在支持查询缓存。

分析器

进行语法解析,判断你输入的这个 SQL 语句是否满足 MySQL 语法。然后生成下面一颗语法树
在这里插入图片描述

优化器

优化实际上是针对语法树进行优化
优化器:任务就是帮你判断一下怎么样执行更快,比如先查Table1再查Table2,还是先查Table2再查Table1呢?判断完如何执行以后,生成执行计划。

执行器

执行器:就是根据执行计划来进行执行查询。我就根据你的指令,逐条调用底层存储引擎,逐步执行。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值