【十八】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.mzph.cn/pingmian/54552.shtml

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

相关文章

linux防火墙学习

Linux 防火墙配置(iptables和firewalld) Linux 防火墙配置(iptables和firewalld)_iptables配置文件位置-CSDN博客 Linux查看防火墙状态及开启关闭命令_linux 查看防火墙-CSDN博客

PatrOwl:一款开源可扩展的安全协调运营平台

关于PatrOwl PatrOwl是一款开源可扩展的安全协调运营平台,广大研究人员可以使用该工具完成组织内部的安全协调运营。 该工具是一种可扩展、免费且开源的解决方案,用于协调安全操作。其中的PatrowlManager是前端应用程序,用于管理资产、实时审…

实变函数研究的问题

实变函数论作为数学分析的一个深入与推广分支,主要研究实值函数的性质和行为。它的问题分类广泛,包括但不限于点集函数、序列、极限。 从更宏观的角度看,实变函数论还涉及实变函数的分类问题、结构问题,以及这些函数在各种数学分支…

el-form中三级动态添加数据

el-form中三级动态添加数据 data数据view按钮触发事件 data数据 submitForm: {id: undefined, //修改IDapp_id: undefined, //IP类型name: , //规则名称sort: undefined, //排序detail: [{keycode: 0,title_one: undefined, //一级标题desc_detail: [{keycode: 0,title_two: u…

阅读CVPR论文——mPLUG-Owl2:革命性的多模态大语言模型与模态协作

读后感悟: 1)实验部分非常丰富,并且论文中的图制作的非常精美,论文开篇的图制作的别出心裁,将几种不同的方法表现出的性能差异不是以普通的表格形式展现,而是制作成了一副环状折线图,论文中其他…

快速理解TCP协议(三)——TCP协议的三次握手与四次挥手

在网络通信的浩瀚海洋中,TCP(Transmission Control Protocol,传输控制协议)如同一座坚固的桥梁,连接着网络世界的每一个角落。TCP协议通过其独特的三次握手(Three-Way Handshake)和四次挥手&…

Docker vs. containerd 深度剖析容器运行时

随着容器技术的日益普及,Docker 和 containerd 这两个名词频繁出现在我们的视野中。它们都是容器化技术的重要组成部分,但各自扮演着不同的角色。本文将深入探讨 Docker 和 containerd 的区别与联系,帮助大家更好地理解容器技术的底层原理。 …

【protobuf】ProtoBuf的学习与使用⸺C++

W...Y的主页 😊 代码仓库分享💕 前言:之前我们学习了Linux与windows的protobuf安装,知道protobuf是做序列化操作的应用,今天我们来学习一下protobuf。 目录 ⼀、初识ProtoBuf 步骤1:创建.proto文件 步…

scss知识汇总

参考资料 https://www.bilibili.com/video/BV1KJ411Y7Zz?p11 //入门 https://www.bilibili.com/video/BV1bK411H7YU?fromsearch&seid1507236772512004325 //精简 https://www.bilibili.com/video/BV1KE411b7RQ?p25 //大全h…

软技能与AI技术的融合

一、引言 ----  随着人工智能(AI)和生成式人工智能(AIGC)如ChatGPT、Midjourney、Claude等大语言模型的迅速崛起,AI辅助编程工具已经变得越来越普遍。这不仅意味着程序员的工作方式正在发生深刻的变革,同…

Centos7 部署rocketmq

1.服务器先创建java环境 Centos7 安装JDK21、配置环境变量_centos7安装jdk21-CSDN博客 2.下载mq 下载的是5.1.4:wget https://dist.apache.org/repos/dist/release/rocketmq/5.1.4/rocketmq-all-5.1.4-bin-release.zip 下载后用unzip解压就行了 3.启动name serve…

【通用权限系统】

通用权限系统 创建一个空的maven父工程pom.xml文件配置作用 搭建公具类父模块common(聚合其子模块)新建模块common-util(核心工具类)pom.xml配置 新建模块service-util 搭建实体类模块model搭建service服务模块service-system依赖…

毕业设计选题:基于ssm+vue+uniapp的英语学习激励系统小程序

开发语言:Java框架:ssmuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:M…

使用jaxb来生成多层嵌套xml

问题 需要生成多层嵌套xml&#xff0c;类似如下内容&#xff1a; <A><B><C><!-- C类的字段 --></C><C><!-- 另一个C类的字段 --></C></B> </A>解决 C.java import jakarta.xml.bind.annotation.*; import lom…

Spring Boot入门指南——从零开始构建你的后端服务

随着微服务架构的流行&#xff0c;Spring Boot 已成为后端开发领域中最流行的框架之一。它简化了配置过程&#xff0c;并帮助开发者快速启动一个应用程序。在本文中&#xff0c;我们将深入探讨 Spring Boot 的基础知识&#xff0c;并结合最新资料&#xff0c;帮助你从零开始搭建…

IT技术在数字化转型中的关键作用

IT技术在数字化转型中的关键作用 在当今数字化浪潮中&#xff0c;IT技术无疑扮演着核心角色。无论是企业的数字化转型&#xff0c;还是政府公共服务的智能化提升&#xff0c;信息技术都在推动着整个社会向更高效、更智能的方向发展。本文将探讨IT技术在数字化转型中的关键作用…

论文阅读 - MDFEND: Multi-domain Fake News Detection

https://arxiv.org/pdf/2201.00987 目录 ABSTRACT INTRODUCTION 2 RELATED WORK 3 WEIBO21: A NEW DATASET FOR MFND 3.1 Data Collection 3.2 Domain Annotation 4 MDFEND: MULTI-DOMAIN FAKE NEWS DETECTION MODEL 4.1 Representation Extraction 4.2 Domain Gate 4.…

使用llama.cpp 在推理MiniCPM-1.2B模型

llama.cpp 是一个开源项目&#xff0c;它允许用户在C中实现与LLaMA&#xff08;Large Language Model Meta AI&#xff09;模型的交互。LLaMA模型是由Meta Platforms开发的一种大型语言模型&#xff0c;虽然llama.cpp本身并不包含LLaMA模型的训练代码或模型权重&#xff0c;但它…

postman控制变量和常用方法

1、添加环境&#xff1a; 2、环境添加变量&#xff1a; 3、配置不同的环境&#xff1a;local、dev、sit、uat、pro 4、 接口调用 5、清除cookie方法&#xff1a; 6、下载文件方法&#xff1a;

PostgreSQL的查看主从同步状态

PostgreSQL的查看主从同步状态 PostgreSQL 提供了一些系统视图和函数&#xff0c;查看和监控主从同步的状态。 1 在主节点上查看同步状态 pg_stat_replication 视图 在主节点上&#xff0c;可以通过查询 pg_stat_replication 视图来查看复制的详细状态信息&#xff0c;包括…