查询缓存效果

简介: 【8月更文挑战第14天】

前面我们提到了查询缓存相关的知识,你可以从两个相反的角度来使用查询缓存案例。第一个角度是你认为查询缓存效果不好,所以你关掉了

我们公司有一个数据库,用的是比较古老的 MySQL 版本。在这个版本上开启了查询缓存。但是实际上效果不太好,因为这里存储的数据其实经常变动,所以缓存命中率一直很低。我索性就关掉了这个查询缓存,后来查询性能也基本没有什么损失。

第二个角度是你赞同使用查询缓存。这里可以用两个案例来说明,第一个案例是你开启了查询缓存。

我们在业务里面有一个关键查询,这个查询比较复杂,执行的时候会非常慢。但是我注意到这个查询对应的数据是很少变动的,于是我尝试开启了查询缓存。果然开启缓存之后,这个查询大部分情况下都命中了缓存,性能得到了很大的提升。

第二个案例是你调整了查询缓存的相关参数,最为常见的是调整 query_cache_min_res_unit。这个参数的默认值是 4KB。大部分情况下,4KB 都太大了,所以会有很多内存浪费。比如说结果集可能就一行,总共不到 1KB,它都给你分配了 4KB。

我们有一个数据库是开启了查询缓存的,但是 query_cache_min_res_unit 一直使用的是默认值 4KB。后来我仔细评估了一下相关业务的查询结果集大小,4KB 显然太大了,浪费了很多内存。所以我后面把它调整成了 1KB,还是能够满足大多数查询的需求。这样就能缓存更多查询的结果集,查询性能得到了提升。

在这个角度之下,你要小心面试官问你为什么 MySQL 8.0 移除了这个功能。答案也很简单,因为缓存功能适合那种耗时并且重复执行的查询,而实际上这一类的查询并不多。 另外一个理由是,数据库本身就容易成为性能瓶颈,那么完全可以让应用自己去做缓存,减轻数据库的负担

目录
相关文章
|
8月前
|
SQL 缓存 关系型数据库
MySQL技能完整学习列表6、查询优化——3、查询缓存——4、SQL优化技巧
MySQL技能完整学习列表6、查询优化——3、查询缓存——4、SQL优化技巧
129 0
|
存储 缓存 监控
【面试题精讲】MySQL-查询缓存
【面试题精讲】MySQL-查询缓存
|
缓存 Java Go
解决Spring Data JPA查询存在缓存问题及解决方案
解决Spring Data JPA查询存在缓存问题及解决方案
728 0
|
3月前
|
存储 缓存 索引
从底层数据结构和CPU缓存两方面剖析LinkedList的查询效率为什么比ArrayList低
本文详细对比了ArrayList和LinkedList的查询效率,从底层数据结构和CPU缓存两个方面进行分析。ArrayList基于动态数组,支持随机访问,查询时间复杂度为O(1),且CPU缓存对其友好;而LinkedList基于双向链表,需要逐个节点遍历,查询时间复杂度为O(n),且CPU缓存对其帮助不大。文章还探讨了CPU缓存对数组增删操作的影响,指出缓存主要作用于读取而非修改。通过这些分析,加深了对这两种数据结构的理解。
53 2
|
8月前
|
缓存 关系型数据库 MySQL
MySQL 查询优化:提速查询效率的13大秘籍(索引设计、查询优化、缓存策略、子查询优化以及定期表分析和优化)(中)
MySQL 查询优化:提速查询效率的13大秘籍(索引设计、查询优化、缓存策略、子查询优化以及定期表分析和优化)(中)
1257 0
|
5月前
|
存储 缓存 NoSQL
微服务复杂查询之缓存策略
微服务复杂查询之缓存策略
|
5月前
|
缓存 关系型数据库 MySQL
【缓存大对决】Memcached VS MySQL查询缓存,谁才是真正的性能之王?
【8月更文挑战第24天】在现代Web应用中,缓存技术对于提升性能与响应速度至关重要。本文对比分析了Memcached与MySQL查询缓存这两种常用方案。Memcached是一款高性能分布式内存对象缓存系统,支持跨服务器共享缓存,具备灵活性与容错性,但受限于内存大小且不支持数据持久化。MySQL查询缓存内置在MySQL服务器中,简化了缓存管理,特别适用于重复查询,但功能较为单一且扩展性有限。两者各有所长,实际应用中可根据需求单独或结合使用,实现最佳性能优化。
166 0
|
5月前
|
缓存 Java 数据库连接
Hibernate 中的查询缓存是什么?
【8月更文挑战第21天】
47 0
|
5月前
|
缓存 数据库 SQL
查询缓存 面试准备
【8月更文挑战第13天】
37 0
|
7月前
|
存储 缓存 监控
MySQL 8.0中查询缓存的废弃与原因分析
MySQL 8.0中查询缓存的废弃与原因分析
380 1