SQL查询语句执行过程

在这里插入图片描述

1、连接器

管理连接,用户登录权限验证。

(1)建立连接后,长时间没有后续操作,会变成空闲连接,超过一定时间后,连接器会断开连接,由参数wait_timeout控制,一般时长是8个小时。

(2)连接分为长连接和短连接。长连接只连续的后续操作都是用同一个连接。短连接指执行完少数几个操作后就断开连接,下次查询需要重新建立连接。

建立连接的过程比较复杂,尽量减少建立连接的动作,也就是尽量使用长连接。(代码中尽量使用sql将全部需要的数据查出后再处理,减少查询次数)

(3)全部使用长连接会导致另一个问题出现,就是占用内存增长的很快,因为Mysql执行过程中,临时的内存会被存储再连接管理的对象里面,只有断开连接后才会释放,可能会导致Mysql进程被系统强制杀掉,也就是「Mysql异常重启」。

解决办法

1)定期断开长连接,或者在程序中判断,使用过大的内存后断开长连接。

2)在mysql5.7版本之后,执行完过大的操作之后,使用mysql_reset_connection来初始化连接资源,这个过程不需要重新建立连接和重新权限验证。

2、查询缓存

大多数情况下不要使用查询缓存,因为弊大于利。查询缓存失效非常频繁,只要有对一个表的更改,缓存就会失效。除非使用的是一张静态表,使用查询缓存。(Mysql8.0之后,查询缓存被删掉)

即使命中缓存之后,也需要判断是否有权限查看这张表。权限通过之后再返回缓存结果。

3、分析器

主要用来分析语法是否正确,字段是否存在等。

4、优化器

生成sql语句的执行计划,优化索引的先后顺序。
多表联查,使用jion的时候不同的查询顺序,可能会导致查询效率不一致。

5、执行器

调用执行sql语句,调用存储引擎的接口,返回查询的数据
执行器执行的时候会判断是否有权限打开这张表,有权限之后再继续执行sql语句。

6、存储引擎层

mysql使用插入式存储引擎

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值