【十八】MySQL 8.0 新特性
MySQL 8.0 新特性
目录
MySQL 8.0 新特性
概述
简述
1、数据字典
2、原子数据定义语句
3、升级过程
4、会话重用
5、安全和账户管理
6、资源管理
7、表加密管理
8、InnoDB增强功能
9、字符集支持
10、增强JSON功能
11、数据类型的支持
12、查询的优化
13、公用表表达式
14、窗口函数
15、统计直方图
16、备份锁
概述
What’s New in MySQL - Welcome MySQL 9.0,官方已经官宣了MySQL 9.0 将于2024.9.26发布,技术的更新的脚步总是快速的,目前我们还有很多MySQL 8.0的技术没有熟练运用,作为一名技术人员我们能够跟上技术更新的脚步,这样才能更好的理解技术行业的一个发展路线。
简述
MySQL 8.0的新特性主要包括以下几个方面。
1、数据字典
MySQL 8.0包含一个事务数据字典,用于存储有关数据库对象的信息。在MySQL 8.0之前的版本中,字典数据存储在元数据文件和非事务表中。
2、原子数据定义语句
MySQL 8.0支持原子数据定义语言(DDL)语句。此功能称为原子DDL。原子DDL语句将与DDL操作关联的数据字典更新,存储引擎操作和二进制日志写入组合到单个原子事务中。即使服务器在操作期间暂停,也会提交事务,并将适用的更改保留到数据字典、存储引擎和二进制日志,或者回滚事务。通过在MySQL 8.0中引入MySQL数据字典,可以实现原子DDL。在早期的MySQL版本中,元数据存储在元数据文件、非事务性表和存储引擎特定的字典中,需要中间提交。MySQL数据字典提供的集中式事务元数据存储消除了这一障碍,使得将DDL语句操作重组为原子事务成为可能。
3、升级过程
以前,在安装了新版本的MySQL后,MySQL服务器会在下次启动时自动升级数据字典表,之后DBA需要手动调用MySQL_upgrade来升级MySQL模式中的系统表,以及sys模式和用户模式等其他模式中的对象。
从MySQL 8.0.16开始,服务器执行以前由MySQL_upgrade处理的任务。安装新的MySQL版本后,服务器现在会在下次启动时自动执行所有必要的升级任务,并且不依赖于DBA调用MySQL_upgrade。此外,服务器会更新帮助表的内容(mysql_upgrade没有这样做)。新的--upgrade服务器选项提供了对服务器如何执行自动数据字典和服务器升级操作的控制。
4、会话重用
MySQL Server现在默认支持SSL会话重用,并具有超时设置,以控制服务器维护会话缓存的时间,该缓存确定了允许客户端为新连接请求会话重用的时间段。所有MySQL客户端程序都支持会话重用。
5、安全和账户管理
MySQL 8.0通过以下功能增强数据库的安全性,并在账户管理中实现更高的DBA灵活性。MySQL数据库的授权表统一为InnoDB(事务性)表。每个语句都是事务性的,并且对所有创建的用户都是成功或者回滚,发生任何错误都无效。如果成功,就将语句写入二进制日志;如果失败则不写入,发生回滚并且不进行任何更改。MySQL 8.0开始支持角色,角色可以看成是一些权限的集合,为用户赋予统一的角色,权限的修改直接通过角色来进行,无须为每个用户单独授权。管理员可以创建和删除角色。MySQL 8.0开始维护有关密码历史的信息,从而限制了以前密码的重用。管理员可以在全局以及每个账户的基础上建立密码重用策略,从而在密码更改时限制使用以前使用过的密码。MySQL 8.0允许账户具有双密码,从而在多服务器系统中无缝地执行分阶段密码更改,无须停机。
6、资源管理
MySQL现在支持资源组的创建和管理,并允许将服务器内运行的线程分配给特定的资源组。资源组属性可以控制其资源,以启用或限制资源组中线程的资源消耗。数据库管理员可以根据不同的工作负载修改这些属性。
7、表加密管理
现在可以通过定义和强制加密默认值来全局管理able加密。default_table_encryption变量定义了新创建的模式和通用表空间的加密默认值。创建架构时,还可以使用default encryption子句定义架构的加密默认值。默认情况下,表继承了在其中创建的模式或通用表空间的加密。
8、InnoDB增强功能
MySQL 8.0增强了InnoDB的功能,主要表现如下:
(1)MySQL 8.0将自增主键的计数器持久化到重做日志中。每次计数器发生改变,都会将其写入重做日志中。如果数据库重启,InnoDB会根据重做日志中的信息来初始化计数器的内存值。为了尽量减小对系统性能的影响,计数器写入重做日志时,并不会马上刷新数据库系统。
(2)如果索引损坏,InnoDB将索引损坏标志写入重做日志,从而使得损坏标志安全。InnoDB还将内存中损坏标志数据写入每个检查点上的引擎专用系统表。在恢复期间,InnoDB从两个位置读取损坏标志并在将内存表和索引对象标记为损坏之前合并结果。
(3)新的动态变量innodb_deadlock_detect可用于禁用死锁检测。在高并发系统上,当许多线程等待同一个锁时,死锁检测会导致速度减慢,此时禁用死锁检测可能更有效。
9、字符集支持
默认字符集已经更改latin1为utf8mb4。该utf8mb4字符集有几个新的排序规则,其中包括utf8mb4_ja_0900_as_cs。
10、增强JSON功能
MySQL增强JSON功能主要表现在以下几个方面:(1)添加了->>运算符,相当于调用JSON_UNQUOTE()的结果。(2)添加了两个JSON聚合函数JSON_ARRAYAGG()和JSON_OBJECTAGG()。JSON_ARRAYAGG()将列或表达式作为其参数,并将结果聚合为单个JSON数组。JSON_OBJECTAGG()取两个列或表达式,将其解释为键和值,并将结果作为单个JSON对象返回。(3)添加了JSON实用程序功能JSON_PRETTY(),JSON以易于阅读的格式输出现有值;每个JSON对象成员或数组值都打印在一个单独的行上,子对象或数组相对于其父对象是2个空格。(4)添加的JSON_MERGE_PATCH()可以合并符合RFC 7396标准的JSON。在两个JSON对象上使用时,可以将它们合并为单个JSON对象。
11、数据类型的支持
MySQL 8.0支持将表达式用作数据类型的默认值,包括BLOB、TEXT、GEOMETRY和JSON数据类型,在以前的版本中是根本不会被分配默认值的。
12、查询的优化
MySQL 8.0在查询方面的优化表现如下:
(1)MySQL 8.0开始支持不可见索引。优化器根本不使用不可见索引,但会以其他方式正常维护。默认情况下,索引是可见的。通过不可见索引,数据库管理员可以检测索引对查询性能的影响,而不会进行破坏性的更改。
(2)MySQL8.0开始支持降序索引。DESC在索引定义中不再被忽略,而且会降序存储索引字段。
13、公用表表达式
MySQL现在支持非递归和递归的公用表表达式。公用表表达式允许使用命名的临时结果集,通过允许WITH语句之前的子句SELECT和某些其他语句来实现。
14、窗口函数
在MySQL 8.0版本中,新增了一个窗口函数,用它可以实现很多新的查询方式。窗口函数类似于SUM()、COUNT()那样的集合函数,但它并不会将多行查询结果合并为一行,而是将结果放回多行当中。
15、统计直方图
MySQL 8.0实现了统计直方图。利用直方图,用户可以对一张表的一列做数据分布的统计,特别是针对没有索引的字段。这可以帮助查询优化器找到更优的执行计划。
16、备份锁
新类型的备份锁在联机备份期间允许DML,同时防止可能导致快照不一致的操作。新的备份锁由LOCK INSTANCE FOR BACKUP和UNLOCK INSTANCE语法支持。管理员拥有BACKUP_ADMIN权限才能使用这些语句。
相关文章:

【十八】MySQL 8.0 新特性
MySQL 8.0 新特性 目录 MySQL 8.0 新特性 概述 简述 1、数据字典 2、原子数据定义语句 3、升级过程 4、会话重用 5、安全和账户管理 6、资源管理 7、表加密管理 8、InnoDB增强功能 9、字符集支持 10、增强JSON功能 11、数据类型的支持 12、查询的优化 13、公用…...

巨潮股票爬虫逆向
目标网站 aHR0cDovL3dlYmFwaS5jbmluZm8uY29tLmNuLyMvSVBPTGlzdD9tYXJrZXQ9c3o 一、抓包分析 请求头参数加密 二、逆向分析 下xhr断点 参数生成位置 发现是AES加密,不过是混淆的,但并不影响咱们扣代码 文章仅提供技术交流学习,不可对目标服…...

传知代码-从零开始构建你的第一个神经网络
代码以及视频讲解 本文所涉及所有资源均在传知代码平台可获取 从零开始构建你的第一个神经网络 在本教程中,我们将使用PyTorch框架从零开始构建一个简单的卷积神经网络(CNN),用于图片二分类任务。CNN 是一种深度学习模型&#…...

大厂面试真题:SpringBoot的核心注解
其实理解一个注解就行了@SpringBootApplication,我们的启动类其实就加了这一个 但是这么答也不行,因为面试官要的答案肯定不止这一个 我们打开SpringBootApplication的源码,会发现上面加了一堆的注解 相对而言比较重要是下面三个…...

Java设计模式—面向对象设计原则(五) ----->迪米特法则(DP) (完整详解,附有代码+案例)
文章目录 3.5 迪米特法则(DP)3.5.1 概述3.5.2 案例 3.5 迪米特法则(DP) 迪米特法则:Demeter Principle,简称DP 3.5.1 概述 只和你的直接朋友交谈,不跟“陌生人”说话(Talk only to your immediate friends and not to stranger…...

docker多阶段镜像制作,比如nginx镜像,编译+制作
镜像制作, nginx的源码包 把nginx源码拷贝到容器内 编译要用到gcc make , 以及扩展工具 pcre openssl # "pcre" perl compatibal regulaer expression 刚开始,可以两个终端, 一个手工操作(编译安装、拷贝、环境变量等)…...

大语言模型量化方法GPTQ、GGUF、AWQ详细原理
大语言模型量化的目的是减少模型的计算资源需求和存储占用,同时尽量保持模型的性能。以下是几种常见的量化方法的原理; 1. GPTQ (Gradient-based Post-training Quantization) GPTQ 是一种基于梯度的后训练量化方法,主要目的是在减少浮点计…...

《 C++ 修炼全景指南:十 》自平衡的艺术:深入了解 AVL 树的核心原理与实现
摘要 本文深入探讨了 AVL 树(自平衡二叉搜索树)的概念、特点以及实现细节。我们首先介绍了 AVL 树的基本原理,并详细分析了其四种旋转操作,包括左旋、右旋、左右双旋和右左双旋,阐述了它们在保持树平衡中的重要作用。…...

SAP 特别总账标识[SGL]
1. 特别总账标识(SGL)概述 1.1 定义与目的 特别总账标识(Special General Ledger, SGL)在SAP系统中用于区分客户或供应商的不同业务类型,以便将特定的业务交易记录到非标准的总账科目中。 定义:SGL是一个用于标记特殊业务类型的…...

认知杂谈77《简单:通往高手的技巧》
内容摘要: 在信息爆炸、关系复杂的时代,简单是复杂背后的真谛。简单如“112”,是智慧的朴素呈现。简单有强大力量,像清泉般纯净,如“我爱你”简单却有力,基础财务知识也体现其在理财中的作…...

《SmartX ELF 虚拟化核心功能集》发布,详解 80+ 功能特性和 6 例金融实践
《SmartX ELF 虚拟化核心功能集》电子书现已发布!本书详细介绍了 SmartX ELF 虚拟化及云平台核心功能,包含虚机服务、容器服务、网络服务、存储服务、运维管理、工具服务、数据保护等各个方面。 即刻下载电子书,了解如何利用基于 SmartX ELF …...

9月23日
思维导图 作业 统计家目录下.c文件的个数 #!/bin/bashnum0for file in ~/*.c; doif [ -f "$file" ]; then((num))fi doneecho "家目录下.c文件的个数: $num"...

如何使用Jinja定义dbt宏
dbt宏在dbt框架内的工作方式与传统编程中的函数类似。它允许用户将特定的、通常是重复的SQL逻辑封装到可调用的命名单元中,就像在其他编程语言中用函数来避免重复代码一样;dbt宏定义特定业务的SQL逻辑,然后在dbt项目中需要的地方调用该宏函数…...

深入理解 JavaScript 三大作用域:全局作用域、函数作用域、块级作用域
一. 作用域 对于多数编程语言,最基本的功能就是能够存储变量当中的值、并且允许我们对这个变量的值进行访问和修改。那么有了变量之后,应该把它放在哪里、程序如何找到它们?是否需要提前约定好一套存储变量、访问变量的规则?答案…...

【门牌制作 / A】
题目 代码 #include <bits/stdc.h> using namespace std; int main() {int cnt 0;for (int i 1; i < 2020; i){string s;s to_string(i);cnt count(s.begin(), s.end(), 2);}cout << cnt; }...

Git+Jenkins 基本使用(Basic Usage of Git+Jenkins)
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…...

智谱清言:智能语音交互的引领者,解锁高效沟通新体验
哪个编程工具让你的工作效率翻倍? 在日益繁忙的工作环境中,选择合适的编程工具已成为提升开发者工作效率的关键。不同的工具能够帮助我们简化代码编写、自动化任务、提升调试速度,甚至让团队协作更加顺畅。那么,哪款编程工具让你…...

前端组件库
vant2现在的地址 Vant 2 - Mobile UI Components built on Vue...

后端常用的mybatis-plus方法以及配合querywapper使用
目录 一、插入数据 save方法 二、删除操作 removeById方法 三、更新操作 updateById方法 四、查询操作 selectById方法 五、条件构造器QueryWrapper的更多用法 1.比较操作符 2.逻辑操作符 3.模糊查询 4.空值判断 一、插入数据 save方法 save(T entity):向数据库中插入…...

【设计模式】万字详解:深入掌握五大基础行为模式
作者:后端小肥肠 🍇 我写过的文章中的相关代码放到了gitee,地址:xfc-fdw-cloud: 公共解决方案 🍊 有疑问可私信或评论区联系我。 🥑 创作不易未经允许严禁转载。 姊妹篇: 【设计模式】…...

C++ 9.19
练习:要求在堆区申请5个double类型的空间,用于存储5名学生的成绩。请自行封装函数完成 1> 空间的申请 2> 学生成绩的录入 3> 学生成绩的输出 4> 学生成绩进行降序排序 5> 释放申请的空间 主程序中用于测试上述函数 #include<ios…...

[Unity Demo]从零开始制作空洞骑士Hollow Knight第五集:再制作更多的敌人
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、制作敌人另个爬虫Crawler 1.公式化导入制作另个爬虫Crawler素材2.制作另个爬虫Crawler的Crawler.cs状态机3.制作敌人另个爬虫Crawler的playmaker状态机二、…...

怎么把excel翻译成英文?这些翻译技巧记得收藏
在处理Excel数据时,我们常常会遇到多语言的数据集,这无疑给数据分析和整理带来了不小的挑战。 幸运的是,随着技术的发展,现在有多种工具可以帮助我们进行Excel中的批量翻译,这些工具以其强大的翻译功能和便捷的操作方…...

信息技术引领的智能化未来
信息技术引领的智能化未来 随着信息技术的飞速发展,社会各个领域正在加速迈入智能化的新时代。信息技术的广泛应用,尤其是人工智能、大数据、物联网等前沿技术的创新与融合,正在从根本上改变着人们的生产和生活方式。本文将探讨信息技术在智…...

【QT开发-Pyside】使用Pycharm与conda配置Pyside环境并新建工程
知识拓展 Pycharm 是一个由 JetBrains 开发的集成开发环境(IDE),它主要用于 Python 编程语言的开发。Pycharm 提供了代码编辑、调试、版本控制、测试等多种功能,以提高 Python 开发者的效率。 Pycharm 与 Python 的关系 Pycharm 是…...

vue选项式写法项目案例(购物车)
一、初始化项目结构 1.初始化vite项目 npm create vite cd vite-project npm install 2.清理项目结构 清空App.vue 删除components目录下的HelloWorld.vue组件 3.为组件的样式启用sacc或less组件 npm i sass4.初始化index.css全局样式 :root{font-size:12px } 二、封装…...

[Linux][进程] 认识进程
基本概念 进程是一个操作系统术语,用来管理与操作程序.在windows下打开任务管理器即可查看目前打开的所有进程 PCB 进程控制块,从代码层面来说 PCB 是进程所有属性的一个结构体,在Linux源码中PCB指的是struct task_struct. Linux环境下: 进程 task_struct 代码 …...

如何安装和注册 GitLab Runner
如何安装和注册 GitLab Runner GitLab Runner 是一个用于运行 GitLab CI/CD (Continuous Integration/Continuous Deployment) 作业。它是一个与 GitLab 配合使用的应用程序,可以在本地或云中运行。Runner 可以执行不同类型的作业,例如编译代码、运行测…...

专业学习|动态规划(概念、模型特征、解题步骤及例题)
一、引言 (一)从斐波那契数列引入自底向上算法 (1)知识讲解 (2)matlap实现递归 (3)带有备忘录的遗传算法 (4)matlap实现带有备忘录的递归算法 “࿱…...

数据结构与算法 #时间复杂度 #空间复杂度
文章目录 前言 一、算法的复杂度 二、时间复杂度 三、空间复杂度 四、例题 1、例1:冒泡排序 2、例2: 3、例3: 4、例4: 二分查找 5、例5: 阶乘 6、例6: 斐波那契 五、常见算法复杂度 总结 前言 路漫漫其修远兮,吾将上下而求索&…...