01 | 基础架构:一条SQL查询语句是如何执行的?

#<-- 该文章借鉴林晓斌老师mysql实战45讲 ->

一条SQL查询语句是如何执行的?

  1. mysql 的基础架构示意图如下所示:
    在这里插入图片描述

  2. 客户端----->服务层------->存储层
    服务层包括连接器,查询缓存,分析器,优化器,执行器,以及所有的内置函数存储引擎则负责数据的存储和提取,存储引擎又分myisam, innodb等等, 所有种类的存储引擎共用同一个服务层mysql5.55后默认存储引擎为innodb

  3. 连接器分为长连接和短连接,由于连接过程比较复杂,建议尽量使用长连接,同时使用长连接后,数据库所占用的内存会持续增加很可能导致mysql异常重启,所以需要定期断开长连接,或者监听执行占用较大内存的查询,查询后断开连接进行重连

  4. 不建议开启查询缓存,因为任何一个表的更新操作都会清空该表相关的所有缓存,效率极低,除非针对的是静态表或者更新操作极小的表,在mysql8后就不存在查询缓存此功能了

  5. 分析器对sql进行语法分析,判断sql是否存在语法错误,sql中的表和相关字段是否存在等

  6. 优化器是对执行方案进行选择,选择一个最优的方案,例如选择哪个索引等等

  7. 执行器在判断是否具有相应的操作权限后,就开始调用存储引擎的相关接口执行sql语句,在扫描数据过程中将满足条件的数据放入缓存集合然后统一返回给客户端

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值