高级程序员为什么喜欢建表的时候加个 ext 字段?

2023-09-25 15:07:36 +08:00
 yuyang1992test

扩展字段,到时候有新的需求再加不可以吗?

12194 次点击
所在节点    程序员
101 条回复
yolee599
2023-09-25 16:26:40 +08:00
有一个 pt-online-schema-change 的方案,使用触发器把旧表数据迁移到新表上。
cqx2005
2023-09-25 16:40:28 +08:00
mysql5.7 , 对于资料表,都会建立 extra 字段,JSON 类型。

生产环境,单表上亿的表有 4-5 张。
yinft
2023-09-25 16:54:04 +08:00
@lambdaq 你这句啊对对对 我耳边都有声音了 哈哈哈
LDa
2023-09-25 16:57:49 +08:00
为了应对频繁的“小 X 啊,我想加个字段” 一个 JSON extra 完事
beneo
2023-09-25 16:59:33 +08:00
@brader 其实你是领导也是一样这样要求,在凌晨做表变更。我觉得核心的问题是你不觉得公司的业务能给你带来价值,你觉得现在的工作占据了你的休息时间。
Itesting
2023-09-25 17:13:43 +08:00
@yolee599 也可用 GitHub 开源的 gh-ost 方案,加字段除了耗费时间对业务基本无感。
brader
2023-09-25 17:17:37 +08:00
@beneo 我就不吃这一套,免费加班爱找谁找谁
xiaogezz
2023-09-25 17:36:21 +08:00
真这么高的负载还用 mysql ?
bigjack
2023-09-25 17:43:59 +08:00
一般预留 10-20 个都属于正常的,变更数据库确实比较麻烦
MeteorCat
2023-09-25 17:47:31 +08:00
我们之前建表默认留了 ext1 ,2 ,3 字段,有些没用过但是有些频繁变动业务的时候完全不够,感觉看表是放什么业务
veike
2023-09-25 17:54:06 +08:00
加子表不行吗?
lincanbin
2023-09-25 17:55:42 +08:00
ext1 、ext2 、ext3 、ext4……
类型全部都是 string
zhangxudong
2023-09-25 18:00:16 +08:00
@devopsdogdog #9 mysql 5.7 的 online ddl 千万级的大表,还是有影响的。mysql8.0 的 online ddl 优化了加字段的操作,直接操作元数据了,大表可以秒级加字段
encro
2023-09-25 18:26:17 +08:00
@me1onsoda
@Morii
@zhangxudong

8.0.12 instant 真爽!

```
ALTER TABLE `user` ADD `status` (1) DEFAULT 0, ALGORITHM=instant
```
yuyang1992test
2023-09-25 18:56:40 +08:00
总结:千万级的表,alter table 会导致锁表时间较长,mysql8.0 解决了这个问题
runzekk
2023-09-25 19:22:05 +08:00
不加。 容易引起误会的字段加了有啥用。 楼上说变更有问题的用的不是云数据库吗,云数据库变更早就有不锁表不停机方案了。 如果不是云数据库,自己怎么弄不行。
peyppicp
2023-09-25 20:05:43 +08:00
我们一个分片 5kw 条数据,700+分片,没有这种扩展字段,每次上个需求都得慢死
rophie123
2023-09-25 21:16:13 +08:00
mysql5 ,亿级别的数据量,说加就加了,经常干
BeautifulSoap
2023-09-25 21:24:02 +08:00
这不光是 alter 的问题,改表的话发布流程多挺多步骤更麻烦也是一点。
预留的话直接代码里用预留字段就行了不用改数据库。
当然,无所谓这点工作成本的话最新版 mysql 倒是无所谓
zhb1993
2023-09-25 21:35:40 +08:00
上次我在线上数据库( MySQL )中,直接修改了一个字段的长度,然后数据库挂了 10 分钟

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/976972

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX