MySQL 9.0.0 中的变化
MySQL 9.0 中的新功能
JavaScript 存储程序
MySQL 企业版现在支持用 JavaScript 编写的存储程序,例如使用 CREATE FUNCTION下面显示的语句和 JavaScript 代码创建的这个简单示例:
sql
CREATE FUNCTION gcd(a INT, b INT)
RETURNS INT
NO SQL
LANGUAGE JAVASCRIPT AS
$mle$
let x = Math.abs(a)
let y = Math.abs(b)
while(y) {
var t = y
y = x % y
x = t
}
return x
$mle$
;
VECTOR 类型支持
MySQL 9.0 支持VECTOR 列类型。向量是一种数据结构,由条目列表(4 字节浮点值)组成,可以表示为二进制字符串值或列表格式的字符串。列声明的VECTOR最大长度或条目数(在括号中);默认值为 2048,最大值为 16383。
可以使用如下所示的 列创建InnoDB表:VECTORCREATE TABLE
sql
mysql> CREATE TABLE v1 (c1 VECTOR(5000));
Query OK, 0 rows affected (0.03 sec)
向量列受到限制:
- 列VECTOR不能用作任何类型的键。这包括主键、外键、唯一键和分区键。
- 某些类型的 MySQL 函数和运算符不接受向量作为参数。这些包括但不限于数字函数和运算符、时间函数、全文搜索函数、XML 函数、位函数和 JSON 函数。Vector 可以与部分(但不是全部)字符串和加密函数一起使用。有关这些函数的更多完整信息,请参阅 VECTOR 支持和不支持的函数。
- AVECTOR不能与任何其他类型进行比较,并且只能与另一个类型进行比较 VECTOR以确定相等性。
保存 EXPLAIN ANALYZE INTO 的 JSON 输出
现在支持将 JSON输出 保存EXPLAIN ANALYZE到用户变量中,使用此处显示的语法:
sql
EXPLAIN ANALYZE FORMAT=JSON INTO @variable select_stmt
有关更多信息和示例, 请参阅MySQL :: MySQL 9.0 Reference Manual :: 15.8.2 EXPLAIN Statement
MySQL 9.0 支持附加 INTO
选项EXPLAIN FORMAT=JSON
,可以将 JSON 格式的输出保存到用户变量中,如下所示:
sql
mysql> EXPLAIN FORMAT=JSON INTO @myselect
-> SELECT name FROM a WHERE id = 2;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT @myselect\G
*************************** 1. row ***************************
@myex: {
"query_block": {
"select_id": 1,
"cost_info": {
"query_cost": "1.00"
},
"table": {
"table_name": "a",
"access_type": "const",
"possible_keys": [
"PRIMARY"
],
"key": "PRIMARY",
"used_key_parts": [
"id"
],
"key_length": "4",
"ref": [
"const"
],
"rows_examined_per_scan": 1,
"rows_produced_per_join": 1,
"filtered": "100.00",
"cost_info": {
"read_cost": "0.00",
"eval_cost": "0.10",
"prefix_cost": "0.00",
"data_read_per_join": "408"
},
"used_columns": [
"id",
"name"
]
}
}
}
1 row in set (0.00 sec)
DDL 语句新增 Event
从 MySQL 9.0.0 开始,可以使用以下 Event 语法:
-
CREATE EVENT(创建事件)
-
ALTER EVENT(修改事件)
-
DROP EVENT(删除事件)
EVENT 语句不支持使用占位符参数(?)。我们必须根据字符串文字、系统变量和用户变量的某种组合来组装要准备的语句文本。
请参阅 :MySQL :: MySQL 9.0 Reference Manual :: 15.5 Prepared Statements
EVENT 语句语法如下:
sql
CREATE
[DEFINER = user]
EVENT
[IF NOT EXISTS]
event_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE | DISABLE ON {REPLICA | SLAVE}]
[COMMENT 'string']
DO event_body;
schedule: {
AT timestamp [+ INTERVAL interval] ...
| EVERY interval
[STARTS timestamp [+ INTERVAL interval] ...]
[ENDS timestamp [+ INTERVAL interval] ...]
}
interval:
quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}
性能模式系统变量表
MySQL 9.0 向性能模式添加了两个新表,提供有关服务器系统变量的信息。这些表列在此处:
- 该variables_metadata 表提供了有关系统变量的一般信息。此信息包括 MySQL 服务器识别的每个系统变量的名称、作用域、类型、范围(如适用)和描述。
- 该表中的两列(MIN_VALUE和 MAX_VALUE)旨在替换 variables_info表中已弃用的列。
- 该 global_variable_attributes 表提供有关服务器分配给全局系统变量的属性值对的信息。
有关更多信息,请参见:MySQL :: MySQL 9.0 Reference Manual :: 29.12.14 Performance Schema System Variable Tables
MySQL 9.0 中弃用的功能
性能架构变量信息表列
性能架构表的MIN_VALUE和 列现已弃用,并可能在将来的 MySQL 版本中删除。相反,请使用表中 具有相同名称的 列。MAX_VALUEvariables_infovariables_metadata
有关更多信息和示例, 请参阅:https://dev.mysql.com/doc/refman/9.0/en/mysql-nutshell.html#mysql-nutshell-additions
MySQL 社区下载
地址:MySQL :: MySQL Community Downloads
这会就都到了熟悉的界面了