跑偏了跑偏了,我不是在吐槽为什么不用8,而是真心在问切换版本过程中有哪些坑,我好留意一下。
1
JinTianYi456 344 天前 3
java8 都没说话,[狗头]
|
2
paradox8599 344 天前 via Android
我新项目都用 postgres 了
|
3
wangkun025 344 天前
操作系统没跟上。
|
4
adoal 344 天前 via iPhone 5
比如那些把聚合查询里 select 非聚合值这种不规范特性当宝又连 only full group by = false 选项都懒得设置的阿狗阿猫…
|
5
NewYear 344 天前 5
为什么要放弃一个运行得好好的项目呢……
对于破坏性升级,除了要代码做兼容,意味着会有新的 bug ,数据库就更麻烦,未必能及时发现,何苦呢…… |
6
NewYear 344 天前
另外就是一些新特性用不上,老的语言和版本还是用着很舒服的。
|
8
adoal 344 天前 via iPhone 4
跟你说个真事,上个月我评审了一个服务类项目验收,其中派工单用的平台是 2021 年交付的,竟然用的是 CentOS 6 + Java 6 + Tomcat 6 这个三兄弟全都 EoL 很多年的老六组合。
|
9
unt OP @JinTianYi456 java8 不是挺好的吗
|
11
mobbdeep 344 天前 1
新项目说不定就是老项目魔改一下呢,用老技术快速交付,省时省力同时满足用户需求的情况下,没什么问题吧
|
12
webshe11 344 天前 5
什么时候出 5.7 了?我还在用 5.5 ( doge
|
13
unt OP 开这个标题主要是最近遇到两个事儿:
1. 有一个设备通信业务场景需要 json 数据,这个 json 逻辑很复杂,嵌套了 6 层应该,错任何一个参数设备都无法识别。我说你们就建张表,id,name,json 三个字段足以,所有数据前端往 json 字段里传。可是后端居然说 mysql 处理 json 很麻烦,不干,非要把所有字段拆散,然后返回的时候拼接。我真的会谢。然后我们说那我们把 json 转成字符串存总可以了吧。还是不干………… 2. 还有一件事是万级数据联合查询一次性返回,我在 mysql8 上用 json_ARRAYAGG 秒查,在 5.7 上花了 18s 多,他们在优化速度,速度极限是在 6s 多,始终提不上去,很浪费工作时间 |
14
zealic 344 天前
COBOL 表示还能战到 2038 年
|
16
Donaldo 344 天前
@unt #15 程序员是老的,或者程序员看的教程是老的,想想看也挺正常,人肯定优先用自己最熟悉的版本来做产出。特别:学习新版本的特性很可能没有什么回报,还会引入不可知的问题。。
|
17
unt OP @Donaldo 话确实如此,没毛病的,比如 centos 我用 7.9 ,node 用 16 ,等等。一个道理。但是 8 应该是趋势吧,早晚要用的,而且某些方面确实优化了一些,代码方面和设计方面能精简不少。我总感觉有些人不肯学。
|
18
Donaldo 344 天前 1
@unt #17 就我个人而言,如果涉及到合作或者工作的项目,那就听领导的/听大伙的,绝不自己多说一句用什么新的好的,确实有这种“谨言慎行,少说少错”的心态。如果是我自己的项目,那我愿意去尝试一下新鲜事物。我估计有一部分人是我这样的心态
|
19
yumizhao888 344 天前 via iPhone 1
一看就是学生。
运行正常的项目傻逼才乱折腾。 |
20
laozhoubuluo 344 天前
坑的话肯定是要对着实现和 https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html 来做比对的。而且有些坑如果人员流动比较大的项目或者时间比较长的项目确实很难提前发现,比如 GROUP BY 隐式排序在 8.0.13 移除了之类的。
再比如项目使用的是 MyISAM 引擎,MySQL 5.7 和 8.x 对这个引擎基本没啥优化,没有生命周期限制的部门自然更没有动力去搞升级了。至于从 MySQL 5.6 + MyISAM 切换 MySQL 5.7 + InnoDB 那就又是额外的一堆坑了。 当然新项目那自然应该直接用新东西,这个倒是没啥疑问。MySQL 升级虽说有坑但也相对平顺了,总比 Java 8 升级 Java 11 事情少的多。 |
21
k9982874 344 天前
升级到 8 能多赚钱吗?不能何必要动一个稳定的项目
|
22
keymao 344 天前
多出来的成本谁来付? 提到付钱了就都安静了是吧? 😂
|
23
Muyiafan 344 天前
系统稳定在跑就别乱动了。
新开的项目可以按照最新的 LTS 版本来。 |
24
xuanbg 344 天前
5.7 升 8 是毫无障碍的。但是,系统运行的好好的,啥毛病没有,升级到 8 做什么?
|
25
1QwQ1 344 天前
存 json 为啥不用 mongo ?
|
26
ZXiangQAQ 344 天前
因为公司没有 mysql8 。。。
|
27
wanguorui123 344 天前
在生产环境兼容性才是王道,自己玩无所谓
|
28
NoobNoob030 344 天前
因为开发不懂或者用不上 8 的新特新,技术是服务于业务的,业务简单技术玩出花能给项目赚几个钱?
|
29
Deshun 344 天前
版本不兼容,占用变高了。
|
30
Felldeadbird 344 天前
首先升级 8 会遇到登录密码问题。
然后数据库很少是直接升级吧。生产服务器我没升级过 Mysql 版本。 |
31
wxw752 344 天前
做自研项目的一般才会考虑升级吧,我们升级了,但是用的是全量+增量同步数据的方法升级的。没有在原来基础升级。
|
33
nothingistrue 344 天前
你这话,换个场景可能更容易理解。公司为什么不愿意一直保持员工年龄年轻化。
|
34
8355 344 天前
因为 5.7 还能用,没有任何刚需,如果数据量大了,加字段不升级也不行。
|
35
layxy 344 天前
5.7 用的好好地为啥要升级,除非有足够大的性能提供或者有用的新特性,否则根本没办法说服领导升级,就像老生常谈的 jdk 版本升级问题一样,你不升级没啥事,升级除了问题你要负责任的
|
36
gongxuanzhang 344 天前
@unt 你甚至不肯提一句 MongoDB
|
38
weeei 344 天前
不升级的原因一般不是不想用新的,现实原因:
1. 项目迭代快,需求都做不完还搞升级的 bug ? 2. 大版本升级可能会带来隐形的 Bug 会把自己坑死,典型的出了问题就是你的问题 |
39
weeei 344 天前
从非技术角度考虑才能想明白。
|
40
opengps 344 天前
只要能用,我宁愿一直用下去
|
41
CodeCodeStudy 344 天前
@unt #17 centos 8 EOL 更早
https://wiki.centos.org/ The current major version is 7 (2009). 8(2111) went EoL on 2021-12-31. 8-Stream will be supported until May 2024. 9-Stream will be supported until May 2027 https://www.centos.org/centos-linux/ Jun 30th, 2024 也就是 7 和 8 stream (不是 8 )在 24 年中结束支持 |
42
jjianwen68 344 天前
还在用 5.6 ,每次提一句准备更新到 5.7 ,然后就不了了之
|
43
AlexHsu 344 天前
因为国产化套壳 5.7 啊
|
44
killva4624 344 天前
借楼问一句 mysql 里的 json 性能如何?
我们有个内部系统,这两天发现是通过一张 id\k\v 列的表实现 json 读写,单个 id 的 kv 对无数量上限;有通过 id 读所有 kv 和根据 id 增写 kv 的场景;这种情况直接用原生的 json 会有什么收益吗? |
45
CodeCodeStudy 344 天前
@unt #17 因为升高版本的话要经过测试的,不然容易踩到坑,比如 nodejs 在 centos7 上只能安装 16 ,安装不了 18
https://nodejs.org/en/blog/announcements/v18-release-announce/#toolchain-and-compiler-upgrades Prebuilt binaries for Linux are now built on Red Hat Enterprise Linux (RHEL) 8 and are compatible with Linux distributions based on glibc 2.28 or later, for example, Debian 10, RHEL 8, Ubuntu 20.04. |
46
CodeCodeStudy 344 天前
查询缓存没有了
https://dev.mysql.com/doc/refman/5.7/en/query-cache.html The query cache is deprecated as of MySQL 5.7.20, and is removed in MySQL 8.0. |
47
aLazarus 344 天前
所以如果是自己的独立项目,大家建议用那种数据库?(在并发极低,数据量少的前提下)
|
48
bthulu 344 天前 5
看看楼上这些人, 你应该知道为什么了吧?
你们公司招的员工年龄太大了, 他们毕业的时候用的还是 mysql5.5 甚至更低, 工作几年了好不容易习惯了 5.7, 你说换 8.0? 对不起, 有这折腾的时候, 还不如回家陪老婆孩子. 你换个思路, 把非关键岗位的全辞掉, 换 985 刚毕业的大学生来, 保管统统给你换成 mysql8. |
49
cndenis 344 天前
@unt 5.7 已经支持 JSON 了, 但 JSON 性能很差,而且无法索引。如果后端需要在数据库中用 SQL 搜索或是 JOIN 的话,全部数据塞一个字段确实不太好,至少也要加些列做索引用
“万级数据”啥概念,MySQL 的表不到 100 万都不算大吧。就算一条数据 1KB ,一万条才 10MB ,能全内存操作的量出瓶颈是不应该的 |
50
EricXuu 344 天前 via Android
我们公司升了,收益巨大。比如大表秒加字段,就是爽,感谢腾讯游戏 dba 的 commit 。
|
51
cnoder 344 天前 1
aws 要强制升级 mysql8 了
|
52
lujiaxing 344 天前
@aLazarus 自己的项目直接用 PostgreSQL 了.... 哪儿还有 MySQL 的事儿啊...
企业项目用 MySQL 5.7 基本都是因为项目框架比较老导致的. 没办法. 我之前一家公司就是这样, 公司技术团队有两个, 一个是 S 市的 Java 团队, 另一个我所在 C 市的 .NET 团队. 我就在这个 .NET 团队里... 我们用的技术栈是 .NET 6 + MySQL 8.0, 用到了一部分 MySQL 8 才有的特性 (比如 CTE, 对字段做位运算等). 结果技术总监从 S 市那边过来发现好像不太行. S 市 Java 团队那边用的 Springboot 版本太老了, 不支持 MySQL 8, 最高只能支持到 MySQL 5.7. 没办法还是退回 MySQL 5.7, 原来用到的 MySQL 8 的特性也只能用其他办法解决. |
53
imkku 344 天前
看到说复杂 json 的时候,我第一反应也是咋没提 MongoDB ?
|
54
coderzhangsan 344 天前
老项目运行好好的数据库,为什么要换呢?从成本、性能、项目稳定角度全面分析下换的好处,不然的话,只能把你换了😄(开个玩笑)。
如果是新项目,自由选择;有人说老人技术栈旧什么的,都是些诡辩之词,根本就不懂项目管理,脑子装的全是唯技术论的调子,其他专业学和理论估计毛都不会看的,这类人说实话都不适合做项目管理,所以职业规划最好不要走技术管理岗。 |
55
aLazarus 344 天前
@lujiaxing #52 感谢回复。因为是我自己的娱乐项目,所以技术选型上自由度比较高,在语言和框架上 spring boot 3 和 jdk17 (写一半的时候才出的 jdk21 )
|
56
paopjian 344 天前
路径依赖
|
57
oneisall8955 344 天前 via Android
@aLazarus sqlite 等文件数据库
|
59
aLazarus 344 天前
@oneisall8955 #57 额这个我倒没调研过,只知道在一些客户端上会用到这个
|
60
lambdaq 344 天前
❎ 为什么还有很多人不愿意放弃 mysql5.7
✅ 为什么还有很多人不愿意放弃 mysql |
61
lujiaxing 344 天前
@BBCCBB 我又不是做 Java 的. 我也不懂这些... 反正技术老大说不行就不行呗... 估计是支持 mysql 8 的驱动跟那个版本的 springboot 不兼容吧.
|
62
NoKey 344 天前 1
之前遇到一个情况,centos7.9+jdk17.0.9 ,某个加密算法会触发一个 bug ,回退到 centos7.7+jdk17.0.2 就没问题,一天到晚项目紧张的要死,谁有空去研究到底为什么,干脆就拿稳定环境到处装完事,又没啥要求强制的需要啥版本
|
63
tyzrj766 344 天前 via Android
非必要不升级,不然堆的屎山容易翻车😁
|
65
boboaiya3 344 天前
我刚刚查了我们的 mysql 版本 ,是 8 ,我好像对 mysql 版本无感,好像都差不多,基本开发都单表查询,加加索引,可能我太菜了
|
66
cenbiq 344 天前
居然还有限制数据库版本的,那像我这种连数据库都不能限定(运行在什么数据库上必须由客户提供的数据库决定)的项目岂不是...
|
67
roundgis 344 天前 via Android
github 從 5.7 換 8 花了一年
|
68
xiangyuecn 344 天前
前几天不是说 github 花了几年时间才完成升级的吗,关键基础设施不是苹果家的 macos ios 不升不让用 强女干用户
|
69
zzzmh 344 天前
因为 5.5 和 5.6 有些语法和功能不一样,要不然我更喜欢 5.5 ,服务器内存太金贵了,虽然没具体测过,但是肉眼感觉是版本越低越省内存,java 同理。1c2g1m 的服务器跑 docker tomcat 8 jdk8 openj9 redis mysql5.7 可以流畅运行 负载个几百人同时不炸 换高版本怕是启动就一大半内存没了
|
70
ZhLTE 344 天前
xxx 的网闸同步只支持到 mysql5.7 用 8 就报错 报错就 gg
|
71
aino 344 天前
就一个工具罢了
|
72
dif 344 天前
看团队氛围吧,爱折腾的,基本上都是最新得。我一直跟着安全版本升级的。要说有没有坑,肯定有。遇到了再说,大不了回滚。再说了,谁家核心业务直接搞大版本升级?不都是边缘业务开搞,没问题了才尝试得么?
|
73
Narcissu5 344 天前
老项目不升级版本我感觉更多是对个人有利,毕竟只要我负责期间不出问题就好,改出问题反而影响绩效
但是对于公司来说,EOL 的项目非常危险,一旦遇到漏洞被攻击连办法都没有(可能很多人负责的项目不够引人注目,没有遇到过这种问题 还有就是万一项目有新需求,连招人可能都困难(比如现在招个 dephi 试试? |
75
lstz 344 天前 via iPhone
mysql5.7 能用,历史踩坑的人多
|
78
tiedan 344 天前
想换 8.0 但是用的内部 mysql 连接库是一个 10 年前的库,不支持 8.0 ,连接的时候会报错
|
79
unt OP 😅留言好多。请注意第二条附言。
|
81
unt OP @cndenis #49
1. 这个 json 不需要搜索,它就是一个文本概念,没有任何逻辑意义,为什么不用 mongo ,因为只有这一个表用到了 json; 2. 是一次性返回处理完的数万条记录,不是分页查询。 |
82
sadfQED2 344 天前 via Android
@adoal 确实存量,用了十多年了。我当年在职的时候曾经想推动升级,结果推不动,然后就不管了,目测现在也还是 centos4+php5.5
|
83
unt OP |
84
zengzizhao 344 天前
@1QwQ1 #25 应该是根据 mongo 和 mysql 各自特点决定业务用什么,而不是因为存 json 而用 mongo 吧
|
85
unt OP @CodeCodeStudy #41 嗯,这个我知道,但是我们不用 8 的原因是因为怕配置和环境出问题
|
86
unt OP @zengzizhao #84 bingo
|
87
unt OP 总结:
1. 其实也看程序员能力,不能怪版本。只是现在有些人数据查得慢,处理得慢,怪数据库性能不行,不懂怎么去优化。厉害的程序员用 5.7 以下应该也能优化得极好,只不过是达到同样效果代码和逻辑上多走了点路而已,那确实是完全不用升级。 2. 楼上老哥找出原因了,哈哈,年龄都太大了。 |
88
pkoukk 344 天前
关程序员啥事,用什么版本的 Mysql 不是运维说了算么?
就是程序员只会用 mysql 5.5 的语法,你给他装个 8.0 ,他还能不会用了? |
89
ttvast 344 天前
我连 innodb 都不想用,myisam 最高。
|
91
dorothyREN 343 天前
@killva4624 json 直接上 pg ,用什么 mysql ,拉垮的不行
|
92
romisanic 343 天前
看出来了,在玩具上用个新版本就觉得领先了,甚至能获得技术优越感的也大有人在
|
95
yvescheung 343 天前 3
|
96
zx9481 343 天前
当然可以换,前一段时间,GitHub 将内部 1200 多个 MySQL 实例组成的数据库集群组( fleet )升级到了 MySQL 8.0 版本
https://github.blog/2023-12-07-upgrading-github-com-to-mysql-8-0/ |
97
SWALLOWW 343 天前
我一般用 sqlite ,mysql 都懒得用
|
98
DeWjjj 343 天前
因为升级是一个很麻烦的事情,要一点一点逐步去替代。
比如最简单的方式是,先把数据同步到 mysql8 ,然后接口上在做负载均衡,然后试运行。 最后,再切换到新的技术栈上面,但是这样是很费力的。 如果是突发奇想想直接换,大概率面临就是宕机。 |
99
salparadise 343 天前
@JinTianYi456 哈哈哈,的确
|
100
Features 343 天前
mysql8 性能有没有明显提升啊?
像 PHP5 到 php7 的性能提升幅度舒适惊讶到我了 其他倒是无所谓了 |