mysql8.0为什么要移除查询缓存,对应又做了哪些优化,进来看看,一定获益匪浅

前言

MySQL 查询缓存是一个用于缓存查询结果的机制,通过减少对数据库的重复查询来提高性能。在 MySQL 5.7 及其之前的版本中,查询缓存的实现主要依赖于哈希表和内存管理。当查询字符串完全匹配且表未发生变动时,查询缓存可以显著提高查询性能。然而,由于查询缓存的一些限制和复杂性,MySQL 8.0 及其更高版本中已经移除了查询缓存功能

1.查询缓存的弊端和局限性

1.1 锁争用问题
查询缓存在高并发环境中会引起锁争用问题。每次对查询缓存的读写操作都需要获取锁,这在高并发下会导致锁的争用,进而引发性能瓶颈。特别是对于写操作较多的场景,查询缓存频繁的无效化和更新操作会导致严重的锁争用问题。

1.2 查询缓存的无效化
查询缓存的无效化机制导致缓存命中率较低。当一个表的数据发生变化时(如 INSERT、UPDATE、DELETE 操作),与该表相关的所有查询缓存都会被无效化。对于写操作频繁的系统,这意味着查询缓存的有效性非常短暂,导致缓存命中率很低,反而增加了缓存维护的开销而没有带来明显的性能提升。

1.3 内存开销
查询缓存需要占用服务器的内存,而内存资源对于数据库系统来说是非常宝贵的。大规模的查询缓存会占用大量内存,进而影响数据库系统的整体性能。特别是在内存有限的环境下,查询缓存可能会与其他内存需求产生冲突,导致整体性能下降。

1.4 复杂性和维护成本
查询缓存的实现和维护增加了 MySQL 的复杂性。查询缓存需要处理各种缓存一致性问题、缓存的添加和删除逻辑,以及缓存的内存管理等。这些复杂性不仅增加了开发和维护成本,也容易引入潜在的错误和性能问题

2.现代缓存技术的发展

随着现代缓存技术的发展和普及,许多应用程序开始使用外部缓存系统(如 Redis、Memcached)来解决缓存问题。这些外部缓存系统专门用于缓存,提供了更高效、更灵活的缓存解决方案,能够更好地满足高并发和大规模数据缓存的需求
2.1 外部缓存系统的优势
专用缓存服务:外部缓存系统如 Redis 和 Memcached 是专门为缓存设计的,具备更高效的缓存管理和存储机制。
分布式缓存:外部缓存系统通常支持分布式部署,能够更好地扩展和处理大规模的缓存需求。
多种数据结构支持:外部缓存系统支持多种数据结构(如字符串、列表、集合、哈希等),能够更灵活地满足不同应用场景的缓存需求

3.MySQL 8.0 的改进和优化

MySQL 8.0 在性能优化和新特性方面进行了大量改进,移除查询缓存使得开发团队可以将更多资源和精力投入到其他更具价值的优化工作中
3.1 执行计划缓存
MySQL 8.0 引入了执行计划缓存(PS Cache),用于缓存预处理语句的执行计划。执行计划缓存比查询缓存更轻量级,不会引入全局锁争用问题,并且能够显著提高预处理语句的执行性能。

3.2 InnoDB 引擎优化
MySQL 8.0 对 InnoDB 存储引擎进行了大量优化,包括改进的锁管理、优化的并发控制机制、更高效的事务处理和存储引擎的性能增强。这些优化显著提升了 MySQL 的整体性能,使其在高并发和大规模数据处理场景下表现更为出色。

3.3 其他新特性和改进
MySQL 8.0 引入了许多新特性和改进,如支持窗口函数和通用表表达式(CTE)、改进的 JSON 支持、增强的安全性和管理功能等。这些新特性使得 MySQL 8.0 更加功能强大和灵活,能够更好地满足现代应用的需求。

总结

MySQL 8.0 移除查询缓存是一个经过深思熟虑的决策,旨在提升整体性能、减少复杂性和维护成本,并更好地利用现代缓存技术的发展。通过这一变革,MySQL 8.0 能够专注于其他关键性能优化和新特性的开发,提供更加稳定和高效的数据库服务

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/39958.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HMI 的 UI 风格成就经典

HMI 的 UI 风格成就经典

力扣61. 旋转链表(java)

思路:用快慢指针找到最后链表k个需要移动的节点,然后中间断开节点,原尾节点连接原头节点,返回新的节点即可; 但因为k可能比节点数大,所以需要先统计节点个数,再取模,看看k到底需要移…

MySQL之高可用性(二)

高可用性 避免单点失效 找到并消除系统中的可能失效的单点,并结合切换到备用组件的机制,这是一种通过减少恢复时间(MTTR)来改善可用性的方法。如果你够聪明,有时候甚至能将实际的恢复时间降低至0,但总的来说这很困难。(即使一些…

16. Java的 Unsafe 类方法介绍

1. 前言 本节内容主要是对 Unsafe 类方法进行介绍,JDK jar 包中的 Unsafe 类提供了硬件级别的原子性操作,Unsafe 类中的方法都是 native 方法,它们使用 JNI 的方式访问本地 C++实现库。 本节我们来了解一下 Unsafe 提…

目标检测技术概述与最新进展

目标检测技术概述与最新进展 一、引言 目标检测是计算机视觉中的一个重要研究方向,旨在在图像或视频中识别并定位目标对象。它在自动驾驶、智能安防、医疗影像分析等领域有着广泛的应用。本文将介绍目标检测的经典方法和最新进展,并给出相关论文的链接…

Python数据可视化书籍推荐:利用Python进行数据分析

《利用Python进行数据分析》 这本书几乎是数据分析入门必读书了 主要介绍了python 3个库numpy(数组),pandas(数据分析)和matplotlib(绘图)的学习 阅读本书可以获得一份关于在Python下操作、处…

Rustdesk如何编译代码实现安装后不会显示主界面,不会在右下角出现托盘图标,作为后台服务运行

环境: Rustdesk1.1.9 问题描述: Rustdesk如何编译代码实现安装后不会显示主界面,不会在右下角出现托盘图标,作为后台服务运行 解决方案: 可以自定义进程名称和图标,不会显示主界面,不会在…

LLM大模型中LoRA是什么?面试经验回答汇总(2024.7月最新)

目录 1 什么是 LoRA? 2 LoRA 的思路是什么? 3 LoRA 的特点是什么? 4 简单描述一下 LoRA? 5 QLoRA 的思路是怎么样的? 6 QLoRA 的特点是什么? 7 AdaLoRA 的思路是怎么样的? 8 LoRA权重是否可以合入…

笛卡尔乘积算法js实现

全因子实验设计( DOE) :指所有因子的所有水平的所有组合都至少进行一次实验,可以估计所有的主效应和所有的各阶交互效应。 笛卡尔乘积:指在数学中,两个集合X和Y的笛卡尔积(Cartesian product),…

视频监控汇聚和融合平台的特点、功能、接入方式、应用场景

目录 一、产品概述 二、主要特点 1、多协议支持 2、高度集成与兼容性 3、高性能与可扩展性 4、智能化分析 5、安全可靠 三、功能概述 1. 视频接入与汇聚 2. 视频存储与回放 3. 实时监控与预警 4. 信息共享与联动 5. 远程管理与控制 四、接入方式 1、直接接入 2…

大模型日报 2024-07-03

大模型日报 2024-07-03 大模型资讯 不到60秒生成3D「手办」,Meta 3D Gen引领3D内容创造新纪元 Meta最新发布的3D Gen技术,通过Meta 3D AssetGen和Meta 3D TextureGen两个阶段,实现了从文本到3D资产的快速生成。这一创新方法不仅大幅提高了3D内…

flask与vue实现通过websocket通信

在一些情况下,我们需要实现前后端之间的时刻监听,本文是一篇工具文档,用于解决前后端之间使用websocket交互。 一. Flask的相关配置 1. 下载相关依赖库 如果还没有配置flask的话,需要先安装flask,同时为解决跨域问题&#xff0…

创建线程的五种方式

一.继承Thread ,重写run class MyThread extends Thread{Overridepublic void run() {//这里的内容就是该线程要完成的工作while(true) {System.out.println("hello thread");try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeExceptio…

Qt开发 | qss简介与应用

文章目录 一、qss简介与应用二、QLineEdit qss介绍与使用三、QPushButton qss1.常用qss1.1 基本样式表1.2 背景图片1.3 图片在左文字在右 2.点击按钮弹出菜单以及右侧箭头样式设置3.鼠标悬浮按钮弹出对话框 四、QCheckBox qss妙用:实时打开关闭状态按钮五、QComboBo…

UE4_材质_使用彩色半透明阴影

学习笔记,不喜勿喷!侵权立删,祝愿大美临沂生活越来越好! 本教程将介绍如何配置虚幻引擎来投射彩色半透明阴影。 此功能在许多应用中都很有用,常见例子就是透过彩色玻璃窗的彩色光。 一、半透明阴影颜色 阴影在穿过半…

面试题--SpringCloud

SpringCloud SOA 和微服务的区别?(必会) 谈到 SOA 和微服务的区别, 那咱们先谈谈架构的演变 1. 集中式架构 项目功能简单, 一个项目只需一个应用, 将所有功能部署在一起, 这样的架构好处是减 少了部署节点和成本. 缺点: 代码耦合,开发维护困难 2. 垂直拆分架构 …

博途S7-1500PLC“虚轴“编程应用

1、CODESYS如何添加虚轴 如何添加虚轴(AM400PLC)-CSDN博客文章浏览阅读164次。EtherCAT运动控制总线启用的时候,选择EtherCAT总线任务周期。选择好后,选择点击添加。https://rxxw-control.blog.csdn.net/article/details/139898985虚轴是利用软件算法实现的运动控制轨迹规划…

HarmonyOS ArkUi 官网踩坑:单独隐藏导航条无效

环境: 手机:Mate 60 Next版本: NEXT.0.0.26 导航条介绍 导航条官网设计指南 setSpecificSystemBarEnabled 设置实际效果: navigationIndicator:隐藏导航条无效status:会把导航条和状态栏都隐藏 官方…

公网IP变更自动微信通知与远程执行命令的C++开源软件

基本功能 智能公网IP变更监测与微信通知 一旦检测到公网IP地址发生变更,系统将自动通过预设的QQ邮箱(该邮箱与微信绑定,实现微信通知)发送新IP地址通知。同时,软件会即时更新本地配置文件中的IP地址及变更时间&#…

深度学习标注文件格式转换

json转xml 原始数据集文件夹中图片格式为bmp&#xff0c;标注文件为json&#xff0c;图片和标注文件放在同一个文件夹下面&#xff0c;将json转为xml格式&#xff0c;图片和标注文件分别存放在一个文件夹下面。 headstr """\ <annotation><folder>…