mysql cache(MySQL取消了Query Cache的原因)
mysql cache
MySQL取消了Query Cache的原因MySQL之前有一个查询缓存Query Cache,从8.0开始,不再使用这个查询缓存,那么放弃它的原因是什么呢?在这一篇里将为您介绍。
MySQL查询缓存是查询结果缓存。它将以SEL开头的查询与哈希表进行比较,如果匹配,则返回上一次查询的结果。进行匹配时,查询必须逐字节匹配,例如 SELECT * FROM t1; 不等于select * from t1;,此外,一些不确定的查询结果无法被缓存,任何对表的修改都会导致这些表的所有缓存无效。因此,适用于查询缓存的最理想的方案是只读,特别是需要检查数百万行后仅返回数行的复杂查询。如果你的查询符合这样一个特点,开启查询缓存会提升你的查询性能。
随着技术的进步,经过时间的考验,MySQL的工程团队发现启用缓存的好处并不多。
首先,查询缓存的效果取决于缓存的命中率,只有命中缓存的查询效果才能有改善,因此无法预测其性能。
其次,查询缓存的另一个大问题是它受到单个互斥锁的保护。在具有多个内核的服务器上,大量查询会导致大量的互斥锁争用。
通过基准测试发现,大多数工作负载最好禁用查询缓存(5.6的默认设置):query_cache_type = 0
如果你认为会从查询缓存中获得好处,请按照实际情况进行测试。
- 数据写的越多,好处越少
- 缓冲池中容纳的数据越多,好处越少
- 查询越复杂,扫描范围越大,则越受益
MySQL8.0取消查询缓存的另外一个原因是,研究表明,缓存越靠近客户端,获得的好处越大。关于这份研究请参考https://proxysql.com/blog/scaling-with-proxysql-query-cache/
下图源自上面的网址:
除此之外,MySQL8.0新增加了对性能干预的工具,例如,现在可以利用查询重写插件,在不更改应用程序的同时,插入优化器提示语句。另外,还有像ProxySQL这样的第三方工具,它们可以充当中间缓存。
综合以上原因,MySQL8.0不再提供对查询缓存的支持,如果用户从5.7版本升级至8.0,考虑使用查询重写或其他缓存。
全文完。
以上就是MySQL取消了Query Cache的原因的详细内容,更多关于MySQL Query Cache的资料请关注开心学习网其它相关文章!
原文链接:https://cloud.tencent.com/developer/article/1693427
- mysql 性能调优技巧(4 款 MySQL 调优工具,公司大神都在用!)
- mysqlexplain的用法(MySQL SHOW STATUS语句的使用)
- 2021-10-18 11:58:15
- mysql如何定义外键(MySQL外键设置的方法实例)
- mysqlpxc性能(MySQL之PXC集群搭建的方法步骤)
- mysql索引面试总结(Mysql数据库索引面试题程序员基础技能)
- mysql支持存储表情(MySQL如何插入Emoji表情)
- mysqlupdate原理(MySQL UPDATE 语句的非标准实现代码)
- mysqlgroupby语句实现原理(Mysql中错误使用SQL语句Groupby被兼容的情况)
- MySQL主从状态检查的实现(MySQL主从状态检查的实现)
- mysql中的null是什么(浅谈为什么Mysql数据库尽量避免NULL)
- mysql内部有4种常见日志(MySQL 慢日志相关知识总结)
- mysql主从同步原理详解(MySQL双主主主架构配置方案)
- mysqljson字段查询(Mysql 查询JSON结果的相关函数汇总)
- mysql连接数与缓存(Mysql连接数设置和获取的方法)
- xampp数据库表在哪个文件夹(XAMPP集成环境中MySQL数据库的使用)
- 蒜苔炒鱿鱼(蒜苔炒鱿鱼)
- 远离 五毛食品 洛阳80后妈妈发明的 飞行棋 成校园爆款 玩具(远离五毛食品)
- 失传的古代飞行棋游戏 六博(失传的古代飞行棋游戏)
- 感冒要吃什么药(猫咪感冒要吃什么药)
- 下雪会怎样(下雪怎样画)
- 白蓝色穿搭(白蓝色衣服配什么裤子)
热门推荐
- 阿里云ecs所有文件备份到本地(阿里云ECS服务器的系统重装、快照备份、恢复数据回滚教程)
- vue3 动态生成组件(如何在vue3.0+中使用tinymce及实现多图上传文件上传公式编辑功能)
- nodejs实现websocket服务端(Node.js+express+socket实现在线实时多人聊天室)
- dedecms制作的网站如何发布(DedeCms后台添加编辑文章空白的解决方法)
- 修改mysql默认超时(MySQL sql_mode修改不生效的原因及解决)
- docker容器与宿主机通信(docker容器与宿主机的数据交互方式总结)
- mysql char和varchar区别(MySQL CHAR和VARCHAR存储、读取时的差别)
- sqlserver怎么查看数据库版本(Sql Server数据库各版本功能对比)
- python基础编程函数参数(详解Python 函数如何重载?)
- javascript中的this判定(Javascript中函数分类&this指向的实例详解)