【十八】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权限才能使用这些语句。

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

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

相关文章

【前端学习】iframe标签以及postMessage解决iframe中的跨域问题

面试中被问到跨域问题&#xff0c;并且面试官提出一个iframe嵌套页面中遇到跨域问题用纯前端解决跨域的方法。卡壳了~ 来学习一下~~ 一. iframe标签介绍 <iframe>是html的一个行内块级元素&#xff0c;像行内元素一样会在一行中水平排列&#xff0c;又可以像块元素一样设…

828华为云征文|在Flexus X实例上安装JDK和Tomcat保姆教学

目录 一、Flexus云服务器X实例 1.1 Flexus X实例概述 1.2 Flexus X实例场景优势 1.3 其他型号与Flexus X实例比较 二、Flexus X实例上安装JDK 2.1 确定安装版本 2.2 yum命令直接安装 2.3 查看版本 三、Flexus X实例上安装tomcat 3.1 上传安装包到Flexus X实例服务器 …

【Redis】持久化机制--RDB和AOF

目录 1. RDB持久化 1.1 触发机制 1.2 流程说明 1.3 RDB文件的处理 1.4 RDB机制演示 1.5 RDB的优缺点 2. AOF持久化 2.1 使用AOF与基本演示 2.2 AOF的工作流程 2.3 文件同步&#xff08;缓冲区刷新策略&#xff09; 2.4 重写机制 2.5 AOF重写流程 2.6 启动时数据恢复 …

产品需求-聊天框中发送的文件,要求文件名过长是保留后缀名省略中间的文字部分

介绍一下之前做过的一个需求&#xff0c;是要实现pc的一个聊天软件的消息引用功能。对于文件的引用&#xff0c;产品是这样做要求的&#xff1a; 消息框无固定长度&#xff0c;根据回复的文字长度决定消息框长度对于一个pc项目&#xff0c;当页面窗口变化时要实现响应式文件名…

C++入门day5-面向对象编程(终)

C入门day4-面向对象编程&#xff08;下&#xff09;-CSDN博客 本节是我们面向对象内容的最终篇章&#xff0c;不是说我们的C就学到这里。如果有一些面向对象的基础知识没有讲到&#xff0c;后面会发布在知识点补充专栏&#xff0c;全都是干货满满的。 https://blog.csdn.net/u…

小学生管理系统项目

在当今数字化教育的背景下&#xff0c;小学生管理系统应运而生。本项目采用 JSP Servlet JDBC MySQL 的技术组合&#xff0c;并在开发工具 Idea 和 Eclipse 的辅助下&#xff0c;结合数据库管理工具 Navicat 进行开发。 一、系统入口 用户登录入口&#xff1a;为普通用户提…

可看见车辆行人的高清实时视频第2辑

我们在《看见车辆行人的高清实时视频第2辑》分享了10处可看见车辆行人的实时动态高清视频。 现在我们又整理10处为你分享可看见车辆行人的实时动态高清视频&#xff0c;一共有30个摄像头数据&#xff0c;这些视频来自公开的高清摄像头实时直播画面。 我们在文末为你分享了这些…

低代码平台推荐与对比,国内外哪家更胜一筹?

低代码开发通过图形界面简化开发&#xff0c;提升速度与协作&#xff0c;降低成本。国内外平台如ZohoCreator、OutSystems等各具特色&#xff0c;支持快速开发、集成与数据安全。企业可试用后按需选择&#xff0c;降低决策成本。 一、低代码是什么&#xff1f; 低代码开发是一…

webpack 4 的 30 个步骤构建 react 开发环境

将 react 和 webpack4 进行结合&#xff0c;集 webpack 的优势于一身&#xff0c;从 0 开始构建一个强大的 react 开发环境。 其实很多人都有 一看就会&#xff0c;一做就废 的特点(当然也包括我在内)&#xff0c;这个时候&#xff0c;你需要制定一个略微详细的计划&#xff0…

C++的成员初始化列表

1、构造函数初始化列表&#xff0c;这是我们在构造函数中初始化类成员&#xff08;变量&#xff09;的一种方式&#xff0c;因此&#xff0c;当我们编写一个类并向该类添加成员时&#xff0c;通常需要用某种方式对这些成员&#xff08;变量&#xff09;进行初始化。 通常在构造…

Efficient DETR: Improving End-to-End Object Detector with Dense Prior

原文链接 [2104.01318] Efficient DETR: Improving End-to-End Object Detector with Dense Prior (arxiv.org)https://arxiv.org/abs/2104.01318 原文笔记 What 1、一种针对DETR的objectquery初始化的方法 2、针对Deformable DETR进行改进&#xff0c;改进之后的模型具有…

【工具分享】FONIX勒索病毒解密工具

前言 FONIX勒索软件首次出现在2020年6月&#xff0c;并迅速成为勒索即服务&#xff08;RaaS&#xff09;平台的一部分。尽管它最初的影响力有限&#xff0c;FONIX从2020年11月开始显著增加了攻击频率。FONIX以其复杂的加密方法著称&#xff0c;使用了AES、Salsa20、ChaCha和RS…

【HarmonyOS】自定义圆点进度条

【HarmonyOS】实现一个自定义带圆点的进度条效果。 方案就是做一个圆角组件&#xff0c;然后利用rotate旋转&#xff0c;至于动画效果&#xff0c;我查了一下文档&#xff0c;只要设置enableSmoothEffect:false&#xff0c;就可以关闭动画&#xff0c;然后自己开个定时器&#…

鸿蒙开发(NEXT/API 12)【硬件(接入手写套件)】手写功能开发

接入手写套件后&#xff0c;可以在应用中创建手写功能界面。界面包括手写画布和笔刷工具栏两部分&#xff0c;手写画布部分支持手写笔和手指的书写效果绘制&#xff0c;笔刷工具栏部分提供多种笔刷和编辑工具&#xff0c;并支持对手写功能进行设置。接入手写套件后将自动开启一…

C++:采用模板封装顺序表,栈,队列

1.顺序表&#xff1a; list.hpp #ifndef LIST_HPP #define LIST_HPP #include <iostream>using namespace std;template <class L>class Seqlist { private:L *ptr;L size;L len0;public:void init(L n){//堆区申请空间&#xff08;大小为n&#xff09;this->…

基于STM32的智能空气质量监测系统

目录 引言项目背景环境准备 硬件准备软件安装与配置系统设计 系统架构关键技术代码示例 传感器数据采集空气质量监测与控制实现实时数据显示与报警系统应用场景结论 1. 引言 空气质量对人类健康有着重要的影响&#xff0c;尤其是在污染较严重的地区。智能空气质量监测系统通…

点餐小程序实战教程12菜品展示

目录 1 点餐界面2 显示菜品分类2.1 创建变量2.2 数据绑定 3 显示菜品总结 我们上一篇介绍了数据源的设计方法&#xff0c;讲解了菜品分类和菜品数据源的创建以及后台功能的开发。有了后台功能并且准备好数据之后&#xff0c;我们就需要开发小程序部分。 现实中你看到的想到的绝…

大数据电商数仓项目--实战(一)数据准备

第一章 数仓分层 1.1 为什么要分层 1.2 数仓命名规范 1.2.1 表命名 ODS层命名为ods_表名DIM层命名为dim_表名DWD层命名为dwd_表名DWS层命名为dws_表名DWT层命名为dwt_表名ADS层命名为ads_表名临时表命名为tmp_表名 1.2.2 表字段类型 数量类型为bigint金额类型为decimal(16…

电脑usb接口封禁如何实现?5种禁用USB接口的方法分享!(第一种你GET了吗?)

“防患于未然&#xff0c;安全始于细节。”在信息技术飞速发展的今天&#xff0c;企业的信息安全问题日益凸显。 USB接口作为数据传输的重要通道&#xff0c;在带来便利的同时&#xff0c;也成为了数据泄露和安全风险的高发地。 因此&#xff0c;对电脑USB接口进行封闭管理&a…

微服务的优点及在云原生时代的合理落地方式

云计算de小白 那么&#xff0c;微服务到底能给业务带来什么好处&#xff1f;在云原生时代&#xff0c;如何更合理地实现微服务&#xff1f; 架构没有好坏之分&#xff0c;只有适合与不适合。然而&#xff0c;当我们对比微服务架构与单体架构时&#xff0c;可以发现微服务有以…