为什么MySQL8.0直接把查询缓存的功能删除了呢?

一种说法是不建议使用查询缓存,因为查询缓存往往弊大于利。
查询缓存的失效非常频繁,只要有对一个表的更新,这个表上的所有的查询缓存都会被清空。
因此很可能你费劲地把结果存起来,还没使用呢,就被一个更新全清空了。对于更新压力大的数据库来说,查询缓存的命中率会非常低。除非你的业务有一张静态表,很长时间更新一次,比如系统配置表,那么这张表的查询才适合做查询缓存。

在我看来,大多数应用都把缓存做到了应用逻辑层,简单的如一个map的mybatis,复杂的可以用redis或者memcache,直接操作内存远远比走网络访问快,所以mysql直接抛弃了查询缓存?

MySQL
2023-11-16 13:03:59
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Potatoes先生

MySQL服务器团队有一篇关于此的详细​​博客​​,其中Matt Lord说:

尽管MySQL Query Cache旨在提高性能,但它存在严重的可伸缩性问题,并且很容易成为严重的瓶颈。
自MySQL 5.6(2013)以来,默认情况下已禁用查询缓存,因为众所周知,它不能与多核计算机上在高吞吐量工作负载情况下进行扩展。

我们考虑了可以对查询缓存进行哪些改进,以及我们可以进行的优化,这些优化可以改善所有工作负载。

虽然这些选择本身是正交的,但工程资源是有限的。也就是说,我们正在转变战略,投资于更普遍适用于所有工作负载的改进。

建议把缓存放到客户端

“Client + 2x ProxySQL”结果显示,在将缓存移动到客户端时,性能提高了5.2倍。

分享
微博
QQ
微信
回复
2023-11-16 14:01:04
相关问题
RDS MySQL8.0如何升级到PolarDB MySQL?
3047浏览 • 1回复 待解决
为什么禁止缓存napi_env
978浏览 • 1回复 待解决
安装MySQL为什么要创建MySQL用户?
2135浏览 • 1回复 待解决
Mysql 驱动为什么要依赖 protobuf?
3872浏览 • 1回复 待解决
如何删除preferences中缓存数据?
458浏览 • 1回复 待解决
关于mysql中order by查询问题
2253浏览 • 1回复 待解决
sequelize;mysql关联表查询问题
3067浏览 • 1回复 待解决
MySQL如何多表合并查询
2651浏览 • 1回复 待解决