mysql5.7-8.0及mariaDB简单对比

说白了,MySQL5 .7 、MySQL8 .0和MariaDB这三者各有千秋,选择哪个主要看你的需求。
先说最重要的,兼容性方面,MySQL5 .7 和MariaDB8 .0之间的兼容性在逐渐减小,这意味着一旦你选择了其中一个,更换的代价可能会比较大。
去年我们跑的那个项目,就是因为兼容性问题,差点导致数据迁移失败。

另外一点,技术支持上,MySQL5 .7 和MySQL8 .0有Oracle的专业团队在背后支持,而MariaDB则依赖社区力量,虽然社区支持广泛,但决策过程可能没有Oracle那么迅速和直接。
我一开始也以为社区支持意味着更新更频繁,后来发现并不一定,有时候决策过程反而会更慢。

功能与特性上,MySQL5 .7 相对基础,但能满足大部分用户的基本需求。
而MySQL8 .0则融入了更多新特性,性能也有所提升,如果你追求高性能和丰富功能,8 .0是个不错的选择。
MariaDB在保持兼容性的同时,也加入了一些新特性,但可能不如MySQL8 .0那么全面。

升级与迁移方面,从MySQL5 .7 到MySQL8 .0的升级相对平滑,但迁移前要确保新版本能满足你的需求。
而从MySQL到MariaDB的迁移可能更复杂,因为两者之间还是有差异。
等等,还有个事,迁移前一定要做好充分的测试和评估。

最后,我觉得对于当前使用MySQL5 .7 的用户,如果没有特别需求,可以继续使用。
如果想要更好的性能和功能,可以考虑升级到MySQL8 .0。
至于转向MariaDB,除非有明确需求,否则不建议轻易迁移。
这个点很多人没注意,迁移数据库可不仅仅是换一个软件那么简单,它涉及到数据安全、系统稳定性和业务连续性等多个方面。
我觉得值得试试的是,在做出决定前,先评估一下你的具体需求,再做决策。

MySQL 5.7升级8.0后,排序规则问题解决方案汇总

哎哟,兄弟,我前阵子升级MySQL数据库,从5 .7 跳到8 .0,结果就踩了个大坑。
你知道不,就是那种排序规则的问题,搞了我好几天。
我这边就给你说说,别让你也碰上。

那天,我升级完数据库,想跑个查询,结果就给我蹦出来个“ERROR1 2 6 7 (HY000):Illegal mix of collations (utf8 mb4 _general_ci, IMPLICIT) and (utf8 mb4 _09 00_ai_ci, IMPLICIT) for operation 'find_in_set'”的错误。
我当时就懵了,这啥玩意儿啊?
后来我查了查,发现是因为MySQL8 .0默认的COLLATE是utf8 mb4 _09 00_ai_ci,而我之前那些表可能用的是utf8 mb4 _general_ci。
这俩玩意儿不兼容,所以一出查询就出问题了。

我那时候就试试看怎么解决。
首先,我修改了my.cnf文件,把collation_connection的值改成了跟全局变量一样。
但后来发现,在8 .0.3 5 以上的版本,这个参数都废了,只能另想办法。

然后我就改了表的结构,把A_CODE和B_CODE这两列的COLLATE改成了utf8 mb4 _09 00_ai_ci,这样查询就正常了。
还有个办法,就是在SQL语句里直接指定这两列的COLLATE,这样也不需要改表。

这事儿啊,得根据具体情况来。
有时候可能得改配置文件,有时候可能得改表,有时候还得改SQL语句。
反正,遇到这个问题,你得先找出是哪一列的排序规则有问题,然后对症下药。

我后来还发现,用SQLE平台来管理SQL挺方便的,能提升效率,还能提高数据质量。
不过这得花钱,你要是感兴趣可以去看看。

哎,说起来,你数据库升级的时候遇到过什么问题没?别告诉我你也踩坑了啊!