MySQL 拿到一个查询请求后,会先看看之前有没有执行过这条语句,如果执行过,则直接从查询缓存中取之前查询的结果即可, 但大多情况不建议使用 MySQL 的查询缓存,因为弊大于利 。
因为查询缓存的失效非常频繁,只要对一个表进行更新,那么这个表的所有查询缓存将会全部被清除,所以命中率并不会很好,除非你有一张静态的表,不会改变他的数据,或者很久才会更新一次。比如系统配置表,才适合使用这个查询缓存。
还有一个原因是因为,现在有 Redis , MemoryCache 等专门用来做缓存的应用,他们对缓存的处理会更优,而且 MySQL 服务器的资源通常都比较宝贵,所以不推荐使用 MySQL 的查询缓存。
Redis
MemoryCache
查看查询缓存状态:
show variables like '%query_cache_type%';
显式指定使用查询缓存:
select SQL_CACHE * FROM user where ID = 10;
本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!
如有侵权,请联系 cloudcommunity@tencent.com 删除。