前言
🍊缘由
MySQL一更新,实在有点闹心
🏀事情起因:
大家好,我是JavaDog程序狗
今天跟大家聊一下MySQL9.0新版本发布,仅代表个人观点,大佬DBA轻喷
📘『你想听的故事 』
本狗在写上一篇【工具】比Navicat还好用,我咋这么不信呢时
突然想到这么多年java版本都21+了,用了这么多年的MySQL8.x,有没有新版本让我耍耍
于是乎,摸鱼的狗哥就贱呼呼打开了MySQL官网,小手这么一搜,果然MySQL9.0已发布多日,本狗流下了落后的泪水
遂将自己尝鲜的MySQL9.0的使用感受跟大家分享一下,好用与否自行评断
🎯主要目标
实现2大重点
1. MySQL9.0有什么新特性
2. MySQL9.0怎么下载
3. MySQL9.0新特性实操
4. 老版本是否有必要升级MySQL9.0
🥦目标分析
一. MySQL9.0有什么新特性
查看任何软件产品,官网一定是第一选择
这是本狗领导说过的一句话,受益匪浅。不管是文档手册也好,还是升级补丁之类,只要我们使用软件,一定要以官网为主!!
下面本狗带着小伙伴一起翻一下官网,掌握阅读官网新特性小技巧
1.打开官网找到发行说明
https://dev.mysql.com/doc/relnotes/mysql/9.0/en/
发行说明中会包含版本清单、文档、新功能特性入口,方便查阅
2.点击MySQL 9.0 中的新增功能
通过MySQL 9.0 中的新增功能跳转对应功能清单
3.翻阅功能清单
一般包含4个模块
- 新增功能
- 更新修改功能
- 弃用功能
- 删除功能
我们来总结一下新增特性
💎新增功能:
- JavaScript 存储程序
MySQL 企业版现在支持用 JavaScript 编写的存储程序
👽人话解释
就是MySQL9.0之前不支持JavaScript写存储程序,现在支持了
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
👽人话解释
MySQL 9.0加了一个向量VECTOR。一般用在像存储经纬度坐标和高度等,目前应用场景不是太多
mysql> CREATE TABLE v1 (c1 VECTOR(5000));
但VECTOR不能用作下列任何类型的函数和运算符的参数:
-
数字函数和运算符
-
时间函数
-
全文搜索功能
-
XML 函数
-
位函数,例如按位AND与 OR
-
JSON 函数
- 内联和隐式外键约束
MySQL 现在强制执行内联外键规范,该规范以前被解析器接受,但被忽略
👽人话解释
内联外键约束指的是在创建表时直接在列定义中指定外键约束,而不是使用单独的FOREIGN KEY语句
例如:
-- 在这个例子中,FOREIGN KEY紧跟着parent_id列的定义,这就是一个内联外键约束。
CREATE TABLE child (
id INT PRIMARY KEY,
parent_id INT,
FOREIGN KEY (parent_id) REFERENCES parent(id)
);
隐式外键约束通常指的是那些在表结构中存在但未显式声明为外键的列。例如,你有一个child表和一个parent表,child表中的parent_id列引用了parent表的id列,但是没有显式地用FOREIGN KEY语句声明这种关系。
- 保存 EXPLAIN ANALYZE INTO 的 JSON 输出
现在支持将 JSON输出 保存EXPLAIN ANALYZE到用户变量中
👽人话解释
EXPLAIN和ANALYZE语句可以用来分析查询计划和执行效率
EXPLAIN ANALYZE FORMAT=JSON SELECT * FROM your_table WHERE your_condition;
总体来说,这些新特性没有特别大的革新,对于本狗来说,可有可无
二. MySQL9.0怎么下载
两种方式,一种直接官网下载,另一种直接docker拉取镜像
方式一:官网下载
https://dev.mysql.com/downloads/mysql/
方式一: docker拉取镜像
不会在windows上使用docker的小伙伴可以看一下狗哥之前的博客
【从零开始】Docker Desktop:听说你小子要玩我
三. MySQL9.0新特性实操
1. JavaScript 存储程序
2. VECTOR 类型支持
四. 老版本是否有必要升级MySQL9.0
-
新功能需求:
MySQL 9.0可能包含MySQL 8.0中没有的新功能,如改进的向量数据类型支持、更严格的外键约束执行等。如果你的应用或业务需要这些新功能,升级可能是必要的。 -
性能优化:
每个新版本通常都会带来性能上的优化,包括查询执行速度、存储引擎的改进等。如果性能是关键考量因素,升级可以带来显著的提升。 -
安全性增强:
新版本往往包含最新的安全补丁和增强的安全特性,这对于保护敏感数据至关重要。 -
技术支持和维护:
长期支持(LTS)版本会获得更长时间的技术支持和安全更新,确保你的数据库系统保持稳定和安全。 -
生态系统的兼容性:
随着软件生态系统的发展,一些新的工具、框架或服务可能需要较新的数据库版本才能充分利用其功能
🎃 狗哥人话总结: 真心没必要生级!!!大厂紧跟节奏的除外
总结
个人观点:MySQL9.0并没有什么大特性更新,没必要升级,看看热闹就好
🍈猜你想问
如何与狗哥联系进行探讨
关注公众号【JavaDog程序狗】
公众号回复【入群】或者【加入】,便可成为【程序员学习交流摸鱼群】的一员,问题随便问,牛逼随便吹,目前群内已有超过290+个小伙伴啦!!!
2.踩踩狗哥博客
javadog.net
里面有狗哥的私密联系方式呦 😘
大家可以在里面留言,随意发挥,有问必答
🍯猜你喜欢
文章推荐
【Java】@Transactional事务套着ReentrantLock锁,锁竟然失效超卖了
【规范】Git分支管理,看看我司是咋整的
【工具】珍藏免费宝藏工具,不好用你来捶我
【插件】IDEA这款插件,爱到无法自拔
【规范】看看人家Git提交描述,那叫一个规矩
【工具】用nvm管理nodejs版本切换,真香!
【项目实战】SpringBoot+uniapp+uview2打造H5+小程序+APP入门学习的聊天小项目
【项目实战】SpringBoot+uniapp+uview2打造一个企业黑红名单吐槽小程序
【模块分层】还不会SpringBoot项目模块分层?来这手把手教你!