MySQL上新:MySQL 9.1.0发布

MySQL 9.1.0 已经于 2024 年 10 月 15 日正式发布。这是一个创新版本,增加了一些新功能、修复了一些问题并且弃用了一些旧功能。

同时发布的还有 MySQL 8.4.3 以及 MySQL 8.0.40。

以下是该版本包含的部分更新。

原子DDL

在该版本之前,虽然 CREATE DATABASE 以及 DROP DATABASE 具有原子性,但是并非具有完全崩溃安全性,可能导致以下问题:

  • 如果 CREATE DATABASE 语句在创建数据库目录之后,但没有提交事务之前失败,数据字典不会感知该数据库的存在。此时,文件系统中的数据库目录需要手动清除。
  • 如果文件系统错误或者异常关闭导致 DROP DATABASE 语句没有成功删除数据库目录,事务并非总会回滚。此时也需要手动干预解决问题。

从新版开始,只要涉及的数据库都使用支持原子 DDL 语句的存储引擎(例如 InnoDB),这些语句就会具有完全的原子性和崩溃安全性。

SQL函数

修复了 UNION 查询中 DATABASE() 函数结果被截断的缺陷。

修复了 SUM() 函数某些情况下指定 DISTINCT 选项时的错误,例如:

mysql> SELECT SUM(b'1100'), SUM(DISTINCT b'1100');
+--------------+-----------------------+
| sum(b'1100') | sum(DISTINCT b'1100') |
+--------------+-----------------------+
|           12 |                     9 |
+--------------+-----------------------+

这个问题的原因在于使用了 DISTINCT 时会创建一个临时表,用于数据去重。该版本之前的临时表没有考虑数据类型和长度,导致了数据问题,新版本解决了这个问题。

SQL语法

在该版本之前允许以下形式的查询:

SELECT test.dt.a FROM (SELECT 1 AS a) AS dt;

该查询使用了 db_name.tbl_name.col_name 引用派生表中的字段,这种形式违反了 SQL 标准。与此类似的还有通用表表达式中的字段引用。新版本不再支持这种语法。

新版本增加了 CREATE VIEW 语句的 IF NOT EXISTS 选项。如果被创建的视图不存在,直接创建视图;如果视图已经存在,该语句显示成功执行,但是不会修改视图定义,并且会产生一个警告信息:

mysql> CREATE VIEW v1 AS SELECT c1, c3 FROM t1;
Query OK, 0 rows affected (0.01 sec)mysql> CREATE VIEW v1 AS SELECT c2 FROM t1;
ERROR 1050 (42S01): Table 'v1' already existsmysql> CREATE VIEW IF NOT EXISTS v1 AS SELECT c2 FROM t1;
Query OK, 0 rows affected, 1 warning (0.01 sec)mysql> SHOW WARNINGS;
+-------+------+---------------------------+
| Level | Code | Message                   |
+-------+------+---------------------------+
| Note  | 1050 | Table 'v1' already exists |
+-------+------+---------------------------+
1 row in set (0.00 sec)mysql> SHOW CREATE VIEW v1\G
*************************** 1. row ***************************View: v1Create View: CREATE ALGORITHM=UNDEFINED DEFINER=`vuser`@`localhost` SQL 
SECURITY DEFINER VIEW `v1` AS select `t1`.`c1` AS `c1`,`t1`.`c3` AS `c3` from `t1`
character_set_client: utf8mb4
collation_connection: utf8mb4_0900_ai_ci
1 row in set (0.00 sec)

IF NOT EXISTS 选项和 OR REPLACE 选项不兼容,一个 CREATE VIEW 语句中不能同时指定这两个子句。

向量数据类型

新版本中的 STRING_TO_VECTOR() 函数允许字符形式的 VECTOR 数据中包含尾部空白符。解析器可以截断数字以及中括号前后的空白符,例如:

  • “[1 ,2]”
  • “[1,2 ]”
  • " [1,2]"
  • "[1,2] "

新版本中的 JavaScript 存储程序完全支持 VECTOR 类型,包括输入参数、输出参数、预编译语句 bind() 参数以及返回结果。

完整信息

以上只是介绍了部分更新,完整内容可以参考发现说明:

https://dev.mysql.com/doc/relnotes/mysql/9.1/en/news-9-1-0.html

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

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

相关文章

【高分论文密码】AI赋能大尺度空间模拟与不确定性分析及数字制图

随着AI大语言模型的广泛应用,大尺度空间模拟预测与数字制图技术在不确定性分析中的重要性日益凸显。这些技术已经成为撰写高分SCI论文的关键工具,被誉为“高分论文密码”。大尺度模拟技术能够从不同的时空尺度揭示农业生态环境领域的内在机理和时空变化规…

JAVA开源项目 课程智能组卷系统 计算机毕业设计

本文项目编号 T 009 ,文末自助获取源码 \color{red}{T009,文末自助获取源码} T009,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 老…

【JAVA毕业设计】基于Vue和SpringBoot的医院电子病历管理系统

本文项目编号 T 008 ,文末自助获取源码 \color{red}{T008,文末自助获取源码} T008,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 医…

Focal Loss

Focal Loss Kullback-Leibler Divergence(相对熵)NLL LossCross Entropy LossBalanced Cross Entropy LossFocal Loss应用场景:1、车道检测与分类 Kullback-Leibler Divergence(相对熵) KL散度(Kullback-L…

python自动化办公实例(使用openpyxl、os处理统计Excel表中的数据并将其合并)

源数据格式 以其中一个表格为例 可以看到表中数据比较杂乱且并没有我们想要的数据、指标(如一等奖、二等奖的数量)不利于下一步数据的分析。所以我们需要手动对数据进行一些处理,大致格式如下: 数据处理格式 这里的手动处理可以…

图像的空域处理实验作业

# 在绘图中显示中文字体,而非乱码 from pylab import mpl mpl.rcParams["font.sans-serif"] ["SimHei"]import cv2 import matplotlib.pyplot as plt import numpy as np1 绘制伽马变换的函数图像,并导入一张图像,对其进…

基础算法(6)——模拟

1. 替换所有的问号 题目描述: 算法思路: 从前往后遍历整个字符串,找到问号之后,尝试用 a ~ z 的每一个字符替换即可 注意点:需考虑数组开头和结尾是问号的边界情况 代码实现: class Solution {public …

《深度学习》OpenCV FisherFaces算法人脸识别 原理及案例解析

目录 一、FisherFaces算法 1、什么是FisherFaces算法 2、原理 3、特点 4、算法步骤 1)数据预处理 2)特征提取 3)LDA降维 4)特征投影 5)人脸识别 二、案例解析 1、完整代码 运行结果: 一、Fish…

Java 深度优先搜索

深度优先搜索(Depth-First Search, DFS)是一种用于遍历或搜索树或图的算法。在Java中,可以使用递归或迭代的方法来实现DFS。下面我将分别介绍这两种实现方式。 递归实现 递归实现通常更为直观和简洁。在递归方法中,我们会使用一…

[Java基础] 流程控制

[Java基础] 运算符 [Java基础] 基本数据类型 [Java基础] Java HashMap 的数据结构和底层原理 目录 基本语法 条件语句 if 语句 if-else 语句 switch 语句 循环语句 for 循环 while 循环 do-while 循环 跳转语句 break 语句 continue 语句 return 语句 最佳实践…

嵌入式基础 -- SDIO协议

SDIO 硬件、协议与 Linux 驱动技术文档 1. SDIO 简介 SDIO(Secure Digital Input Output)协议是SD存储卡的物理接口扩展,允许通过SD总线连接和控制各种I/O设备,如Wi-Fi、蓝牙、GPS模块等。SDIO协议在标准的SD协议基础上扩展&…

【题解】【记忆化递归】——Function

【题解】【记忆化递归】——Function Function题目描述输入格式输出格式输入输出样例输入 #1输出 #1 提示数据规模与约定 1.思路解析2.AC代码 Function 通往洛谷的传送门 题目描述 对于一个递归函数 w ( a , b , c ) w(a,b,c) w(a,b,c) 如果 a ≤ 0 a \le 0 a≤0 或 b ≤…

大厂面试真题-具体说说jdk1.7和1.8的hashmap的线程不安全都有什么问题

HashMap在JDK 1.7和JDK 1.8中都存在线程不安全的问题,但具体表现和解决方式有所不同。以下是对这两个版本中HashMap线程不安全问题的详细分析: JDK 1.7 HashMap的线程不安全问题 在JDK 1.7中,HashMap的线程不安全问题主要体现在扩容过程中。…

阿里Dataworks使用循环节点和赋值节点完成对mongodb分表数据同步

背景 需求将MongoDB数据入仓MaxCompute 环境说明 MongoDB 100个Collections:orders_1、orders_2、…、orders_100 前期准备 1、MongoDB数据源配置 需要先保证DW和MongoDB网络是能够联通的,需要现在集成任务中配置MongoDB的数据源信息。 具体可以查…

项目分析:自然语言处理(语言情感分析)

在这个信息爆炸的时代,我们每天都在与海量的文本数据打交道。从社交媒体上的帖子、在线评论到新闻报道,文本信息无处不在。然而,这些文本不仅仅是文字的堆砌,它们背后蕴含着丰富的情感和观点。如何有效地理解和分析这些情感&#…

【AI知识点】对比学习(Contrastive Learning)

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】 对比学习(Contrastive Learning) 是一种基于样本之间相似性和差异性的无监督或自监督学习方法,旨在通过构建正例和负例对来学习数据的有效表示。对比学习广泛应用于自然语言处理&#…

Linux下的防病毒软件(Antivirus software for Linux)

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 本人主要分享计算机核心技…

FFmpeg的简单使用【Windows】--- 指定视频的时长

目录 功能描述 效果展示 代码实现 前端代码 后端代码 routers 》users.js routers 》 index.js app.js 功能描述 此案例是在上一个案例【FFmpeg的简单使用【Windows】--- 视频混剪添加背景音乐-CSDN博客】的基础上的进一步完善,可以先去看上一个案例然后再…

docker环境安装mongoDB实现平滑迁移实战

docker环境安装mongoDB实现平滑迁移实战 一、备份原始数据(从别的服务器备份到当前服务器)二、数据迁移三、迁移过程日志打印四、验证迁移数据准确性 一、备份原始数据(从别的服务器备份到当前服务器) 使用mongodump工具对原始mo…

Redisson使用全解

redisson使用全解——redisson官方文档注释(上篇)_redisson官网中文-CSDN博客 redisson使用全解——redisson官方文档注释(中篇)-CSDN博客 redisson使用全解——redisson官方文档注释(下篇)_redisson官网…