MySQL 8.0 为什么会放弃查询缓存?
什么是查询缓存?
查询缓存就是将一次查询结果存储在内存中,假如下一次查询结果在内存中,就直接在内存中读取。
设计初衷
当然是提高性能,通过缓存来减少解析器、优化器、存储引擎的执行时间。
MySQL查询缓存原理
MySQL查询缓存是一个查询结果缓存。它将以SEL开头的传入查询与哈希表进行比较,如果匹配,则返回上一次执行查询的结果。
就是将查询SQL进行Hash处理,然后将结果存进内存,假如第二次查询SQLHash值存在,那么直接从内存中读取,加快查询的速率。
那为什么MySQL要放弃查询缓存?
Although MySQL Query Cache was meant to improve performance, it has serious scalability issues and it can easily become a severe bottleneck.
尽管MySQL查询缓存旨在提高性能,但它存在严重的可扩展性问题,很容易成为严重的瓶颈。
- 对于
Select * from stu与select * from stu由于Hash的结果不同,所以查询缓存不会被命中,对于复杂的业务场景这种情况可能会大量发生。 - 查询缓存会在表增删改的情况下失效,所以查询缓存适合读多写少的场景,QueryCache理想的场景往往是只读的。
- 对于表分区默认查询缓存关闭。
- 对于未命中缓存的Sql,会进行数据写入,官方统计会消耗13%的资源。
- 对于某些的函数,查询缓存也不会生效,比如now()
综上所述,查询缓存可能会成为MySQL的瓶颈,所以官方选择删除。
那我们需要使用查询缓存怎么办?
官方推荐了性能更好的第三方客户端ProxySQL,如果有需要可以自己研究使用。
优质博客推荐:https://blog.csdn.net/wtopps/article/details/127733437
参考:https://dev.mysql.com/blog-archive/mysql-8-0-retiring-support-for-the-query-cache/
MySQL 8.0 为什么会放弃查询缓存?的更多相关文章
- mysql 开发进阶篇系列 24 查询缓存下
一. 查询缓存 1.开启缓存 [root@xuegod64 etc]# vim my.cnf 设置了缓存开启,缓存最大限制128M,重启服务后,再次查询 -- 开启查询缓存后 SHOW VARIABL ...
- MySQL事务、锁机制、查询缓存
MySQL事务 何为事务? 事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit). 一个事务可以是一条SQL语句,一组SQL语句或整个程序. 事务的特性: 事 ...
- MySQL查询缓存总结
可以通过下面的SQL查看当前查询缓存相关参数状态: show variables like '%query_cache%'; 1) query_cache_type 查询缓存类型: 0 表示始终不适 ...
- mysql实战优化之九:MySQL查询缓存总结
mysql Query Cache 默认为打开.从某种程度可以提高查询的效果,但是未必是最优的解决方案,如果有的大量的修改和查询时,由于修改造成的cache失效,会给服务器造成很大的开销. mysql ...
- mysql(五)查询缓存
mysql的逻辑架构图如下: 当开启查询缓存时,mysql会将查询结果缓存到查询缓存区域,结果对应的key是使用查询语句,数据库名称,客户端协议的版本等因素算出的一个hash值. 在下次查询时,根据一 ...
- MySQL加速查询速度的独门武器:查询缓存
[导读] 与朋友或同事谈到MySQL查询缓存功能的时候,个人喜欢把查询缓存功能Query Cache比作荔枝, 是非常营养的东西,但是一次性吃太多了,就容易上火而流鼻血,虽然不是特别恰当的比喻,但是有 ...
- Mysql查询缓存碎片、缓存命中率及Nagios监控
Mysql 的优化方案,在互联网上可以查找到非常多资料,今天对Mysql缓存碎片和命中率作了详细了解,个人作了简单整理. 一.Mysql查询缓存碎片和缓存命中率. mysql> SHOW STA ...
- MySQL关闭查询缓存(QC)的两种方法
MySQL Query Cache 会缓存select 查询,安装时默认是开启的,但是如果对表进行INSERT, UPDATE, DELETE, TRUNCATE, ALTER TABLE, DROP ...
- 生产要不要开启MySQL查询缓存
一.前言 在当今的各种系统中,缓存是对系统性能优化的重要手段.MySQL Query Cache(MySQL查询缓存)在MySQL Server中是默认打开的,但是网上各种资料以及有经验的DBA都建议 ...
- [转]MySQL查询缓存清空
本文转自:https://www.cnblogs.com/wangyiwei/p/7765457.html 可以通过下面的SQL查看当前查询缓存相关参数状态: SHOW VARIABLES LIK ...
随机推荐
- OIDC – 关于 SAML 和 ADFS
前言 最近听朋友说, 正在使用 ADFS 做 SSO, 哎哟. 我都是用 OIDC 做的, 这个 ADFS 是啥? 没听过. 于是搜索了一下, 这里先做一个小记入. ADFS 介绍 参考: stack ...
- Azure 学习笔记
选择 VM 配套 https://docs.azure.cn/zh-cn/virtual-machines/sizes https://docs.azure.cn/zh-cn/virtual-mac ...
- Hugging Face NLP课程学习记录 - 0. 安装transformers库 & 1. Transformer 模型
Hugging Face NLP课程学习记录 - 0. 安装transformers库 & 1. Transformer 模型 说明: 首次发表日期:2024-09-14 官网: https: ...
- QT数据可视化框架编程实战之三维散点图从入门到精通_补天云QT技术培训专家
简介 本文将介绍支持GPU图形硬件加速的QT数据可视化框架编程实战之三维散点图从入门到精通_补天云QT技术培训专家.本文将创建一个含有三个序列的三维散点图,同时设定了坐标轴的标题和标签,使得用户点击表 ...
- Kubernetes StatefulSet 控制器(二十一)
前面我们学习了 Deployment 和 ReplicaSet 两种资源对象得使用,在实际使用的过程中,Deployment 并不能编排所有类型的应用,对无状态服务编排是非常容易的,但是对于有状态服务 ...
- 如何让img图片居中
说明:img是行内块元素,用一个盒子(父元素)嵌套img(子元素) text-align:center;可以让父元素为块元素的行内块或行内元素水平居中: vaertical-align:middle; ...
- 47.vue-router的钩子函数
钩子函数就是路由导航守卫 : 有 7 个守卫,分为 3 类 : 全局守卫:在全部的组件生效: beforeEach 全局前置守卫 afterEach 全局后置守卫 解析守卫 组件守卫:在某个组件生效 ...
- HTB打靶记录-Cicada
Nmap Scan nmap扫描一下ip nmap -sT -sV -O -Pn 10.10.11.35 Nmap scan report for 10.10.11.35 Host is up (0. ...
- OpenFunction v0.8.0 发布:通过 Dapr Proxy 加速函数启动
相较于其他函数计算项目,OpenFunction 有很多独特的功能,其中之一便是通过 Dapr 与各种后端服务(BaaS)无缝集成.目前 OpenFunction 已经支持了 Dapr 的 pub/s ...
- 微软nuget国内源
https://www.cnblogs.com/Leo_wl/p/16328650.html 为解决国内访问NuGet服务器速度不稳定的问题 ,这里推荐使用NuGet微软官方中国国内镜像 地址:htt ...