Mysql入门基础(二)

MYsql中的Sql执行流程

5.7以前的查缓存

在mysql5.7中,当mysql拿到一条sql后,首先会到查询缓存中看看,之前是否执行过这条sql语句。之前执行过的语句,会以key value的形式存储在缓存中。(key是sql语句,value是查询结果)

如果你的语句恰好命中了缓存,那么这条sql不会再去走后续的执行阶段,而是直接取缓存返回,节省了时间,提高了效率。

但其实呢,这个mysql自带的查询缓存是很鸡肋的,原因有二。

首先sql相同的概率很低(需要每个字符都相同,空格也不能有区别)

第二,也是更重要的,就是相同的查询会命中相同的结果。但是其实相同的查询,在不同的时间点是不一定一样的,或者可以说大概率不同。比如NOW这个函数,随时都不同。还有select * from table where … 这样的语句,并不能屏蔽中间有修改的情况,用户中间修改了一些数据,但是缓存依然会命中,这就会产生严重错误。

也即,这种缓存只适用于很久都不更新的库。

也正是由于以上两点,mysql在8.0中,直接删掉了缓存的功能。

sql执行流程图

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值