mysql 9.0 新特性:支持VECTOR列类型 内联和隐式外键约束 等

发布时间:2025-05-13      访问量:38
MySQL 9.0有以下新特性:
1. **支持VECTOR列类型**:向量是由条目列表(4字节浮点值)组成的数据结构,可表示为二进制字符串值或列表格式字符串。VECTOR列在声明时需指定最大长度或条目数量,默认值为2048,最大值为16383。不过,VECTOR列不能用作任何类型的键,且某些函数和运算符不接受向量作为参数,向量只能与另一个VECTOR进行相等性比较。同时还新增了VECTOR_DIM()函数用于返回向量的长度,以及STRING_TO_VECTOR()(别名:TO_VECTOR())和VECTOR_TO_STRING()(别名:FROM_VECTOR())函数用于不同表示之间的转换。
2. **内联和隐式外键约束**:MySQL 9.0强制执行内联外键规范,以前版本中解析器接受但忽略的内联外键现在会被正确处理。同时,MySQL 9.0还接受对父表主键列的隐式引用。
3. **支持将EXPLAIN ANALYZE的JSON输出保存到用户变量**:语法为`EXPLAIN ANALYZE ... INTO @variable [FORMAT = JSON]`,随后可以将该变量作为MySQL JSON函数的JSON参数使用。此功能仅当`explain_json_format_version`服务器系统变量设置为2时才可用。并且此形式的`EXPLAIN ANALYZE`还支持可选的`FOR SCHEMA`或`FOR DATABASE`子句。
4. **准备语句中的事件DDL**:从MySQL 9.0.0开始,`CREATE EVENT`和`DROP EVENT`语句可以进行准备。可以在存储过程的主体中组装例如`CREATE EVENT`语句的文本,并将该语句的任何变量部分作为`IN`参数传递给存储过程,使用`PREPARE`准备组装的文本,再使用所需的参数值调用过程,以此实现可重用性。
5. **性能模式系统变量表**:新增了`variables_metadata`表和`global_variable_attributes`表。`variables_metadata`表提供有关系统变量的一般信息,包括名称、范围、类型、范围(如果适用)和描述等,其中的`MIN_VALUE`和`MAX_VALUE`列旨在替换`variables_info`表中已废弃的列。`global_variable_attributes`表提供有关服务器分配给全局系统变量的属性 - 值对的信息。
6. **EXPLAIN FORMAT=JSON的增强功能**:其输出现在包括有关连接列的信息,能让用户更清晰地了解查询执行计划中连接操作的相关细节。
7. **包含LIMIT 1的相关子查询优化**:在MySQL 9.0中,包含`LIMIT 1`的子查询现在可以以某种方式进行转换,不过`LIMIT`子句必须仅使用字面值1,如果包含其他值,或者使用占位符`(?)`或变量,则无法使用子查询到派生表的转换进行优化。
8. **支持JavaScript存储程序(仅MySQL Enterprise Edition)**:通过多语言引擎组件(MLE),支持使用JavaScript编写存储过程和函数。JavaScript语言支持符合ECMAScript 2023规范,默认使用严格模式且无法禁用,包括所有标准的ECMAScript库对象,还支持`console.log()`和`console.error()`。大多数MySQL数据类型都支持用于JavaScript存储程序的输入和输出参数以及返回数据类型,但向量类型不被支持。

此外,MySQL 9.0在底层架构上也进行了优化,采用如GCC 13这样先进的编译器及一系列优化后的库文件,在处理效率、内存管理和并发控制等方面有质的突破。同时,并行查询功能得到拓展,查询优化器也更加智能,能够根据查询语句的特点、数据分布以及索引情况,筛选出最优执行计划。
堆内存
多线程
strdup
初始化器
冒泡排序
增删改查
BufferedReader
输入输出
面向对象
生命周期
闭包的概念
原型链
Flask
mysql-connector-python
单例模式
浅拷贝
隔离级别
索引
InnoDB
左连接
聚合函数
PuTTY
TRUNCATE
str_starts_with_many
DateTime
array_combine
闭包的概念