MySQL5.x与8.0

news2024/9/25 17:16:29
  • 大致区别

  • 1. 性能:MySQL 8.0 的速度要比 MySQL 5.7 快 2 倍
    • MySQL 8.0 在以下方面带来了更好的性能:读/写工作负载、IO 密集型工作负载、以及高竞争("hot spot"热点竞争问题)工作负载
  • 2. NoSQL:MySQL 从 5.7 版本开始提供 NoSQL 存储功能,目前在 8.0 版本中这部分功能也得到了更大的改进
    • 该项功能消除了对独立的 NoSQL 文档数据库的需求,而 MySQL 文档存储也为 schema-less 模式的 JSON 文档提供了多文档事务支持和完整的 ACID 合规性
  • 3. 窗口函数(Window Functions):从 MySQL 8.0 开始,新增了一个叫窗口函数的概念,它可以用来实现若干新的查询方式
    • 窗口函数与 SUM()、COUNT() 这种集合函数类似,但它不会将多行查询结果合并为一行,而是将结果放回多行当中
    • 即窗口函数不需要 GROUP BY
  • 4. 隐藏索引:在 MySQL 8.0 中,索引可以被“隐藏”和“显示”
    • 当对索引进行隐藏时,它不会被查询优化器所使用
    • 我们可以使用这个特性用于性能调试,例如我们先隐藏一个索引,然后观察其对数据库的影响
    • 如果数据库性能有所下降,说明这个索引是有用的,然后将其“恢复显示”即可;
    • 如果数据库性能看不出变化,说明这个索引是多余的,可以考虑删掉
  • 5. 取消查询缓存:MySQL 8.0 出于性能和可维护性方面的考虑取消了查询缓存,通过使用索引、更好的查询计划优化、以及缓存结果集而不是整个查询
    • 这些方法更有效地提高了查询性能,同时避免了查询缓存可能引入的问题
  • 6. 降序索引:MySQL 8.0 为索引提供按降序方式进行排序的支持,在这种索引中的值也会按降序的方式进行排序
  • 7. 通用表达式(Common Table Expressions CTE):在复杂的查询中使用嵌入式表时,使用 CTE 使得查询语句更清晰
  • 8. UTF-8 编码:从 MySQL 8 开始,使用 utf8mb4 作为 MySQL 的默认字符集
  • 9. JSON:MySQL 8 大幅改进了对 JSON 的支持,添加了基于路径查询参数从 JSON 字段中抽取数据的 JSON_EXTRACT() 函数,以及用于将数据分别组合到 JSON 数组和对象中的 JSON_ARRAYAGG() 和 JSON_OBJECTAGG() 聚合函数
  • 10. 可靠性:InnoDB 现在支持表 DDL 的原子性,也就是 InnoDB 表上的 DDL 也可以实现事务完整性,要么失败回滚,要么成功提交,不至于出现 DDL 时部分成功的问题,此外还支持 crash-safe 特性,元数据存储在单个事务数据字典中
  • 11. 高可用性(High Availability):InnoDB 集群为您的数据库提供集成的原生 HA 解决方案
  • 12. 安全性:对 OpenSSL 的改进、新的默认身份验证、SQL 角色、密码强度、授权
  • InnoDB

    • 1-对Auto_Increment持久性的更改
      • 将具有 AUTO_INCREMENT 属性的字段添加到 InnoDB 表时,会将AUTO_INCREMENT计数器保留在 InnoDB 表信息存储中
      • 在MySQL 8.0之前,此计数器仅保存在内存中,而不保留在磁盘上,因此必须在重新启动MySQL服务器时对其进行初始化
      • 因此,在MySQL服务器重新启动后执行第一个插入语句时,InnoDB 首先执行上述查询,并将结果增加1后的值作为计数器加载到内存中(如果设置了auto_increment_increment,则按该值递增)
      • 这种 Auto_Increment 的初始化方式在 MySQL 8.0 中发生了改变;现在,每当自动增量值发生变化时,都会被记录到重做日志中,并保存在管理检查点的存储引擎系统表中
      • 因此,当服务器在正常关闭后重新启动时,将使用存储在数据字典系统表中的最大自动增量值来初始化内存中的Auto_Increment计数器
      • 来看一个简单的例子:

      • 这是创建了一个包含具有Auto_Increment属性的id列的表,并插入了2行数据的结果

      • 如果在此示例表中显式声明事务并插入第三行数据,则可以看到上面的结果

      • 此时,如果重启MySQL服务器,再次查看表数据,如果上面执行的事务被回滚,你将会发现数据中id=3的数据已经消失了

      • 我将再次插入具有相同内容的数据
      • 在MySQL 8.0中,通过使用存储在数据字典的系统表中(即使是在MySQL服务器重新启动后也仍然会保留)的最大自动递增值,来初始化内存中的Auto_Increment计数器
      • 因此,在回滚后,id=3之后的值,即4被分配
      • 在MySQL 5.7及之前的版本中,在回滚之后重新启动服务器时,会重新使用与回滚事务相关的自动递增值
      • 但是,在MySQL 8.0中,当前最大的自动递增值会被保留,因此无法重新使用先前已分配的值
    • 2-NOWAIT and SKIP LOCKED
      • 其次,是使用设计用于支持锁定处理的两个新功能
      • 我们将研究 MySQL 8.0 如何处理热行(Hot rows)

      • 在 MySQL 5.7 版本以前,当应用程序尝试访问被锁定的行时,如果在有限的时间内无法获得访问权限,那么就会超时并且需要重新尝试事务
      • 在 MySQL 8.0 中,通过引入两个新功能(NOWAIT、SKIP LOCKED),可以更精细地实现锁处理场景,并更有效地处理超时情况

      • 首先,使用 NOWAIT 可使应用程序在访问被锁定的行时无需等待锁释放或超时
      • 即使设置了会话级 innodb_lock_wait_timeout = 1,也可以获得类似的效果,使得查询不等待行锁,而是立即失败并引发错误

      • SKIP LOCKED 是一个设置,它基于 WHERE 子句请求处理剩余行而不等待行锁,并将锁定的行从结果集中移除
      • 因此,虽然可以获取结果而不引发错误,但始终无法确保结果集的一致性
  • SQL DDL

    • MySQL 8.0引入了名为Instant的新算法,用于某些DDL操作
    • Instant算法可以立即完成某些DDL操作,而无需长时间等待
    • 在早期版本中使用的Inplace算法,在某些DDL操作中需要在内部重新构建表,并在进程启动和关闭时获取元数据锁
    • 因此,随着表的尺寸增大,不仅需要花费更长的时间,还需要时刻关注在DDL操作期间执行的长事务
    • 另外,由于DDL语句必须传送到从服务器并等待操作完成后才能反映数据变化,因此必须容忍数据复制的延迟
  • 对于新的"Instant"算法来说
    • 不再需要重新构建表,而是通过在数据字典(DD)中仅修改元数据的方式来应用变更
    • 而且,这种方式不仅仅可以应用于表级别的变更,还可以应用于列级别的变更,从而进一步提高了性能和效率
    • 并且不需要获取元数据锁,与以前的算法相比,实现了更快的处理速度

    • 即使在每个DDL语句中不明确指定算法(ALGORITHM = INSTANT),MySQL 8.0也会默认支持Instant算法;因此可以省略对算法的明确说明
    • 根据以上内容,虽然这是一个相当令人高兴的功能,可以保证数据库操作的瞬间性,但还是建议您考虑下应用新算法相关的限制和可能的副作用
    • 如前所述,Instant 算法是通过修改元数据而无需重新构建表格来应用的,这意味着它很难修复数据损坏问题
    • 换句话说,在 MySQL 5.7 中,可以通过进行数据定义语言(DDL)操作来修复表格或索引的损坏以确保数据的稳定性,但在 MySQL 8.0 中变得更加困难
    • 另外,对于使用Instant算法的列添加操作
      • 只能在表的末尾进行添加
      • 无法适用于被压缩的表
  • 未完待续...

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

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

相关文章

CPU算力分配 - 华为OD统一考试

OD统一考试 题解: Java / Python / C++ 题目描述 现有两组服务器A和B,每组有多个算力不同的CPU,其中 A 是A组第个CPU的运算能力,是 B组 第个CPU的运算能力。一组服务器的总算力是各CPU的算力之和。 为了让两组服务器的算力相等,允许从每组各选出一个CPU进行一次交换。 求…

基于PHP的蛋糕购物商城系统

有需要请加文章底部Q哦 可远程调试 基于PHP的蛋糕购物商城系统 一 介绍 此蛋糕购物商城基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈:phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销…

做一个wiki页面是体验HTML语义的好方法

HTML语义:如何运用语义类标签来呈现Wiki网页 在上一篇文章中,我花了大量的篇幅和你解释了正确使用语义类标签的好处和一些场景。那么,哪些场景适合用到语义类标签呢,又如何运用语义类标签呢? 不知道你还记不记得在大…

爱芯派pro通过无线网卡rtl8188eu连接热点

爱芯派pro通过无线网卡rtl8188eu连接热点 爱芯派pro目前的底板的pcie的复位有问题,所以pcie接口无法挂载上去,所以自己购买的rtl8822网卡也用不了,然后想起来自己还有正点原子的rtl8188eu网卡,但是没有和工作人员进行摸索后才知道…

Swagger升级指南:Swagger2与Swagger3注解差异揭秘

在API开发的世界里,Swagger已经成为了一个不可或缺的工具,它让API的文档化和前后端的协作变得前所未有地简单。随着Swagger的进化,我们迎来了Swagger3,也被称为OpenAPI Specification 3.0。本篇博客将带大家深入了解Swagger2和Swa…

【Python 基础】-- 在 mac OS 中安装 多个 python 版本

目录 1、需求 2、实现 2.1 安装 pyenv 2.2 安装 pyenv-virtualenv 2.3 配置环境变量 2.4 创建 python 3.9.9 的环境 2.5 激活环境,在当前项目目录中使用,即执行 python 1、需求 由于项目所依赖的 python 版本有多个,需要在不同的 pyth…

在线客服系统中的全渠道服务:多渠道整合与无缝沟通体验

很多采购人员在了解在线客服系统的时候都会遇到一个名词——全渠道。很多人第一次接触可能并不理解它是什么意思,也不知道自己的企业是否需要这个”全渠道“。今天这篇文章就为大家解答一二。 一、全渠道是什么? 全渠道 (Omni-Channel),就是…

DeepLabV3+实现sar影像海面溢油区识别

今天我们分享DeepLabV3的sai影像水体提取。 数据集 本次使用的数据集是Deep-SAR Oil Spill (SOS) dataset。该数据集由中国地质大学的朱祺琪团队制作并共享。该数据集包含墨西哥湾溢油区域和波斯湾溢油区域,分别获取于ALOS 和Sentinel-1A卫星。由ECHO研究组搜集制作…

说说 Spring Boot 实现接口幂等性有哪几种方案?

一、什么是幂等性 幂等是一个数学与计算机学概念,在数学中某一元运算为幂等时,其作用在任一元素两次后会和其作用一次的结果相同。 在计算机中编程中,一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数或幂等…

【go语言】error错误机制及自定义错误返回类型

简介 Go 语言通过内置的 error 接口来处理错误,该接口定义如下: type error interface {Error() string }这意味着任何实现了 Error() 方法的类型都可以作为错误类型。在 Go 中,通常使用 errors 包的 New 函数来创建简单的错误:…

三维尺寸中,您需要了解的设备及其特点

三维尺寸测量需要用到一些精密仪器,它们都有各自的特点。那么三维尺寸测量中常用的设备有哪些? 1、三坐标测量机 三坐标测量机即三坐标测量计算机数控系统,是一种高精度的测量设备。除了传统的点、线、面和圆柱体等基本轮廓外,还可…

车辆违规实线变道检测系统:融合Gold-YOLO改进YOLOv8

1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 研究背景与意义 随着城市化进程的加快和交通工具的普及,道路交通安全问题日益凸显。其中,车辆违规实线变道是导致交通事故的重要原因之一。在道路上&…

游戏引擎?

游戏引擎是指一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件。这些系统为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计者能容易和快速地做出游戏程式而不用由零开始。大部分都支持多种操作平台,如Linux、…

【STM32工具篇】使用CLion开发STM32

本文主要记录使用CLion开发STM32,并调试相关功能 使用的CLion版本:2023.3.1 CLion嵌入式配置教程:STM32CubeMX项目 |CLion 文档 (jetbrains.com) OpenOCD官网下载:Download OpenOCD for Windows (gnutoolchains.com) GNU ARM工…

【物联网无线通信技术】WiFi从理论到实践(ESP8266)

文章从理论基础到具体实现完整的介绍了最常见的物联网无线通信技术:WiFi。 文章首先介绍了WiFi这种无线通信技术的一些基本概念,并针对其使用的802.11协议的基本概念与其定义的无线通信连接建立过程进行了简单的介绍,然后对WiFi开发常常涉及的…

基于YOLOv5的吸烟检测系统设计与实现

一、项目背景 吸烟检测作为保障公共健康和环境安全的重要任务之一,一直备受关注。传统的吸烟检测方法往往依赖人工判断,存在准确性低和实时性差的问题。为了解决这些问题,本项目基于深度学习技术进行了吸烟检测系统的设计与实现,…

VMware vSphere 虚拟机迁移按钮灰色解决方案

现象:在 vCenter Server 中右键单击虚拟机,然后单击迁移时,迁移选项将灰显。 原因:在虚拟机备份完成后,没有移除 vCenter Server 数据库 vpx_disabled_methods 表中的条目时,可能会出现此问题。 解决方案&a…

【Transformer框架代码实现】

Transformer Transformer框架注意力机制框架导入必要的库Input Embedding / Out EmbeddingPositional EmbeddingTransformer EmbeddingScaleDotProductAttention(self-attention)MultiHeadAttention 多头注意力机制EncoderLayer 编码层Encoder多层编码块/前馈网络层…

【ARM Trace32(劳特巴赫) 高级篇 21 -- Trace 系统性能分析 Performance Analyzer】

请阅读【Trace32 ARM 专栏导读】 文章目录 Performance AnalyzerPerf 操作步骤采样对象PC采样对象Memory采样对象 TaskPerformance Analyzer sample-based profiling 通常也叫做Trace32 的性能分析(Perf), 这个功能是通过周期性的采样来实现的。被采样到的数据可以被用于统计…

短视频时代,又恰逢双旦来临之际,普通人又该如何立足?

我是电商珠珠 在电商发展迅速的同时,短视频也在同步发展。国内的短视频比较热门的有抖音、视频号、快手这几个。 抖音在19年的时候发展起了自己的电商行业-抖音小店,并顺势掀起了直播电商的热潮。 直播电商在短视频中很火,所以很多人都选择…