社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

MySQL 9.0创新版发布,大失所望。。。

嵌入式微处理器 • 3 月前 • 127 次点击  
大家好,我是程序员鱼皮。
2024 年 7 月 1 日,MySQL 发布了 9.0 创新版本。区别于我们大多数开发者常用的 LTS(Long-Term Support)长期支持版本,创新版本的发布会更频繁、会更快地推出新的特性和变更,可以理解为 “尝鲜版”,适合追求前沿技术的同学体验。
我通过阅读官方文档,完整了解了本次发布的新特性。结果怎么说呢,唉,接着往下看吧。。。

下面就带大家“尝尝鲜”,看一看 MySQL 9.0 创新版本有哪些主要的变化。

一、新特性

1、Event 相关 SQL 语句可以被 Prepared

在 MySQL 中,事件(Events)是一种可以在预定时间执行的调度任务,比如定期清理数据之类的,就可以使用事件。

MySQL 9.0 对事件 SQL 提供了 Prepared 支持,包括:

  • CREATE EVENT

  • ALTER EVENT

  • DROP EVENT

prepared 准备语句是一种预编译的 SQL 语句模板,可以在执行时动态地传入参数,从而提高查询的性能和安全性。

比如下面就是一个准备语句,插入的数据可以动态传入:
PREPARE stmt_insert_employeeFROM 'INSERT INTO employees (name, salary) VALUES (?, ?)';

2、Performance Schema 新增 2 张表

MySQL 的 Performance Schema 是一个用于监视 MySQL 服务器性能的工具。它提供了一组动态视图和表,记录了 MySQL 服务器内部的活动和资源使用情况,帮助开发者进行性能分析、调优和故障排除。

本次新增的表:

  1. variables_metadata 表:提供关于系统变量的一般信息。包括 MySQL 服务器识别的每个系统变量的名称、作用域、类型、范围和描述。此表的 MIN_VALUE 和 MAX_VALUE 列旨在取代已弃用的 variables_info 表的 MIN_VALUE 和 MAX_VALUE 列。
  2. global_variable_attributes 表:提供有关服务器分配给全局系统变量的属性-值对的信息。

3、SQL 语句优化

现在可以使用以下语法将 EXPLAIN ANALYZE(分析查询执行计划和性能的工具)的 JSON 输出保存到用户变量中:
EXPLAIN ANALYZE FORMAT=JSON INTO @variable select_stmt

随后,可以将这个变量作为 MySQL 的任何 JSON 函数的 JSON 参数使用。

4、向量存储

AI 的发展带火了向量数据库,我们可以利用向量数据库存储喂给 AI 的知识库和文档。

虽然 MySQL 官方更新日志中并没有提到对于向量数据存储的支持,但是网上有博主在 MySQL 9.0 社区版中进行了测试,发现其实已经支持了向量存储,如图:
图片来源于网络
在此之前,MySQL 推出过一个专门用于分析处理和高性能查询的数据库变体 HeatWave,本来以为只会在 HeatWave 中支持向量存储,没想到社区版也能使用。如果是真的,那可太好了。

5、其他

此外,还优化了 Windows 系统上 MySQL 的安装和使用体验。

二、废弃和移除

1)在 MySQL 8.0 中,已移除了在 MySQL 8.0 中已废弃的 mysql_native_password 认证插件,并且服务器现在拒绝来自没有 CLIENT_PLUGIN_AUTH 能力的旧客户端程序的 mysql_native 认证请求。为了向后兼容性,mysql_native_password 仍然在客户端上可用;客户端内置的认证插件已转换为动态加载插件。

这些更改还涉及移除以下服务器选项和变量:

  • --mysql-native-password 服务器选项

  • --mysql-native-password-proxy-users 服务器选项

  • default_authentication_plugin 服务器系统变量

2)Performance Schema 中 variables_info 表的 MIN_VALUE 和 MAX_VALUE 列现在已废弃,并可能在将来的 MySQL 版本中移除。开发者应该改为使用 variables_metadata 表的 MIN_VALUE 和 MAX_VALUE 列。

3)ER_SUBQUERY_NO_1_ROW 已从忽略包含 IGNORE 关键字的语句的错误列表中移除。这样做的原因如下:

  • 忽略这类错误有时会导致将 NULL 插入非空列(对于未转换的子查询),或者根本不插入任何行(使用 subquery_to_derived 的子查询)。

  • 当子查询转换为与派生表联接时,行为与未转换查询不同。

升级到 9.0 后,如果包含 SELECT 语句的 UPDATE、DELETE 或 INSERT 语句使用了包含多行结果的标量子查询,带有 IGNORE 关键字的语句可能会引发错误。

三、总结

看了本次 MySQL 9.0 创新版的更新,说实话,大失所望。

在这之前,网上有很多关于 MySQL 9.0 版本新特性的猜测,结果基本上都没有出现,毕竟距离 MySQL 上一次发布的大版本 8.0 已经时隔 6 年。本来以为这次 MySQL 会有一些王炸的新特性,结果呢,本次除了修复了 100 多个 Bug 之外,几乎没啥对开发者有帮助的点。别说没帮助了,我估计很多同学在看这篇文章前都没接触过这些有变更的特性。
我们最关注的,无非就是使用难度、成本和性能提升对吧,最好是什么代码都不用改,直接升级个数据库的版本,性能提升个几倍,还能跟老板吹一波牛皮。

你看看隔壁的 PostgreSQL,这几年,都已经从 11 更新到 17 版本了,AI 时代人家也早就能通过插件支持存储向量数据了。MySQL 你这真的是创新么?

最后,MySQL 9.0 创新版本的下载地址我就不放了,咱还是老老实实用 5.7 和 8.0 版本,MySQL 的新版本,还有很长一条路要走呀!


END

来源:程序员鱼皮

版权归原作者所有,如有侵权,请联系删除

推荐阅读
一个风骚的C语言操作
50条C语言奇技淫巧,精品干货!
Keil被众人吐槽,为啥没被淘汰?

→点关注,不迷路←

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/171931
 
127 次点击