likes
comments
collection
share

MySQL 9.0重磅发布

作者站长头像
站长
· 阅读数 35

MySQL 9.0引入了许多新特性和改进,重点提升了性能、安全性和开发者体验。以下是一些主要新特性:

JavaScript存储程序

MySQL 9.0通过多语言引擎组件(MLE)支持JavaScript存储过程和函数。这允许开发人员使用JavaScript编写存储程序,符合ECMAScript 2023规范,并默认启用严格模式。 以下是一个示例:

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) {
    let t = y;
    y = x % y;
    x = t;
  }
  return x;
$mle$;

这段代码定义了一个计算两个整数最大公约数的JavaScript函数。

VECTOR数据类型

引入了新的VECTOR列类型,用于存储4字节浮点值列表。此类型适用于处理向量化数据,常用于机器学习和科学计算。然而,向量不能用作键,且不能与其他类型进行比较。

VECTOR数据类型用于存储4字节浮点值的列表,以下是一个示例:

CREATE TABLE vectors (
  id INT AUTO_INCREMENT PRIMARY KEY,
  vector_data VECTOR(5000)
);

INSERT INTO vectors (vector_data) VALUES (STRING_TO_VECTOR('[2, 3, 5, 7]'));

SELECT VECTOR_TO_STRING(vector_data) FROM vectors;

这段代码创建了一个包含VECTOR列的表,并插入了一些向量数据,然后将其转换回字符串格式进行查询。

性能模式新表

增加了两个新表variables_metadataglobal_variable_attributes,用于跟踪系统变量和全局变量的属性值对。 以下是查询这些表的示例:

SELECT * FROM performance_schema.variables_metadata LIMIT 2;

SELECT * FROM performance_schema.global_variable_attributes LIMIT 2;

这些查询显示了系统变量和全局变量的属性值对。

JSON输出的EXPLAIN ANALYZE

支持将EXPLAIN ANALYZE的JSON格式输出保存到用户变量中,便于后续使用。 以下是一个示例:

SET @json_output := '';
EXPLAIN ANALYZE FORMAT=JSON INTO @json_output SELECT * FROM my_table WHERE id > 10;

SELECT @json_output;

这段代码将EXPLAIN ANALYZE的结果保存到变量@json_output中,并随后查询该变量。

移除mysql_native_password认证插件

MySQL 9.0移除了mysql_native_password认证插件,改为动态加载插件,以提高安全性和兼容性。 以下是一个如何加载该插件的示例:

INSTALL PLUGIN mysql_native_password SONAME 'auth_native_password.so';

-- 重新启用使用mysql_native_password认证
CREATE USER 'user'@'localhost' IDENTIFIED WITH 'mysql_native_password' BY 'password';

这段代码展示了如何动态加载和使用mysql_native_password认证插件。

这些新特性展示了MySQL 9.0在功能上的重大改进,特别是对开发者和数据处理的支持有了显著提升。

转载自:https://juejin.cn/post/7389946395064942627
评论
请登录