MySQL 7月1号发布了9.0版本,然而没想到并没有引起大家的狂欢,反而是来自DBA圈子的一篇吐槽,尤其是PG界吐槽更厉害。
难道MySQL现在真的这么拉胯了?本着好奇的态度,我也去下载了MySQL9.0的手册看了一下。确实有点让我大跌眼镜,难怪大家都认为这几年MySQL 官方team 是不是都在摸鱼?
MySQL 9.0不推荐使用
首先我们先不说这个版功能如何,性能如何,单纯的就看这个版本的生命周期就知道,太短了。真的不太适合上生产。当然,如果你觉得升级能够很随意的进行,那么请随意。
![alt](https://img-blog.csdnimg.cn/img_convert/da5f0741e50090b4769a04dae9e134b5.png)
我们可以看到很多版本实际上都是创新版本,并非LTS版本,因此其支持周期是非常短暂的。
这类似openGauss6.0 RC-1版本,实际上周期就半年。
MySQL 9.0 新增Javscript能力(MogDB能支持吗?)
我们知道对于javascript的处理,通常是利用json相关函数来处理,因此MySQL 8.x和9 引入了不少的json函数。
实际上我测试,很多json函数MogDB 5.0都支持了,其中一些函数名称有些差异。
当然,如果在openGauss或者MogDB上直接用过函数或者包去存javascript 执行代码,目前是暂时不支持的。
[omm2@mogdb1 ~]$ gsql -r -d test -U roger
Password for user roger:
gsql ((MogDB 5.0.7 build c4707384) compiled at 2024-05-24 10:51:53 commit 0 last mr 1804 )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
test=>
test=> select json_object('{a,1,b,2,3,NULL,"d e f","a b c"}');
json_object
-------------------------------------------------------
{"a" : "1", "b" : "2", "3" : null, "d e f" : "a b c"}
(1 row)
test=>
test=> CREATE TABLE t1 (c1 JSON);
CREATE TABLE
test=> INSERT INTO t1 VALUES
test-> ('{"x": 17, "x": "red"}'),
test-> ('{"x": 17, "x": "red", "x": [3, 5, 7]}');
INSERT 0 2
test=> select * from t1;
c1
---------------------------------------
{"x": 17, "x": "red"}
{"x": 17, "x": "red", "x": [3, 5, 7]}
(2 rows)
test=>
比如其中提到的json_extract函数,在MogDB中的名称不太一样。实际上extract相关函数有好几个,例如:
test=> select json_extract_path('{"f2":{"f3":1},"f4":{"f5":99,"f6":"stringy"}}', 'f4','f6');
json_extract_path
-------------------
"stringy"
(1 row)
test=> select json_extract_path_text('{"f2":{"f3":1},"f4":{"f5":99,"f6":"stringy"}}', 'f4','f6');
json_extract_path_text
------------------------
stringy
(1 row)
test=> select json_extract_path_text_op('{"f2":{"f3":1},"f4":{"f5":99,"f6":"stringy"}}', '{f4,f6}');
json_extract_path_text_op
---------------------------
stringy
(1 row)
test=>
如果大家想了解json、jsonb相关的函数,可以直接看MogDB的官方文档就好了。https://docs.mogdb.io/zh/mogdb/v5.0/json-functions
MySQL9.0引入向量vector(MogDB 5.0能支持吗?)
要说MySQL 9.0的另外一项相对拿的出的功能,那一定是向量了,毕竟这几年向量比较火。
目前MogDB 5.x版本暂时还不支持,但是openGauss 6.0 已经支持了,因此MogDB6.0(预计2025年3月30号发布)也会支持这个特性。
openGauss=# CREATE Extension datavec;
openGauss=# CREATE TABLE items (val vector(3));
openGauss=# INSERT INTO items (val) VALUES ('[1,2,3]'), ('[4,5,6]');
openGauss=# CREATE INDEX ON items USING ivfflat (val vector_l2_ops) WITH (lists = 100);
openGauss=# CREATE INDEX ON items USING ivfflat (val vector_ip_ops) WITH (lists = 100);
openGauss=# CREATE INDEX ON items USING ivfflat (val vector_cosine_ops) WITH (lists = 100);
另外包括一些其他小的功能性增强,比如MySQL 9.0 引入的event功能,比如create/alter/drop event DDL用法。
实际上这个功能,OpenGauss6.0也已经支持了,因此在后面即将发布的MogDB6.0 也应该会支持这个功能。
--创建一个定时任务
openGauss=# CREATE TABLE t_ev(num int);
openGauss=# CREATE EVENT IF NOT EXISTS event_e1 ON SCHEDULE AT sysdate() + interval 5 second + interval 33 minute DISABLE DO insert into t_ev values(0);
--修改定时任务
--修改定时任务状态和待执行语句
openGauss=# ALTER EVENT event_e1 ENABLE DO select 1;
--修改定时任务名
openGauss=# ALTER EVENT event_e1 RENAME TO event_ee;
就简单分享这几点吧。
本文由 mdnice 多平台发布