什么是查询缓存?
查询缓存就是将一次查询结果存储在内存中,假如下一次查询结果在内存中,就直接在内存中读取。
MySQL查询缓存原理
就是将查询SQL进行Hash处理,然后将结果存进内存,假如第二次查询SQL Hash值存在,那么直接从内存中读取,加快查询的速率。
那为什么MySQL要放弃查询缓存?
- 对于
Select * from stu
与select * from stu
由于Hash的结果不同,所以查询缓存不会被命中,对于复杂的业务场景这种情况可能会大量发生。 - 查询缓存会在表增删改的情况下失效,所以查询缓存适合读多写少的场景。
- 对于表分区默认查询缓存关闭。
- 对于未命中缓存的Sql,会进行数据写入,官方统计会消耗13%的资源。
- 对于某些的函数,查询缓存也不会生效,比如now()
综上所述,查询缓存可能会成为MySQL的瓶颈,所以官方选择删除。
那我们需要使用查询缓存怎么办?
官方推荐了性能更好的第三方客户端ProxySQL,如果有需要可以自己研究使用。
优质博客推荐:https://blog.csdn.net/wtopps/article/details/127733437
标签:8.0,缓存,Hash,SQL,查询,内存,MySQL From: https://www.cnblogs.com/handsometaoa/p/17005675.html