8

MySQL 数据库主键用了字符串的 UUID 怎么办?

 2 years ago
source link: https://www.v2ex.com/t/799982
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

V2EX  ›  MySQL

MySQL 数据库主键用了字符串的 UUID 怎么办?

  Geekerstar · 4 小时 43 分钟前 · 953 次点击

最近参与到一个老项目中:

MySQL 数据库主键 id varchar 64,如 00cfad279bf14e60a9c39c91e7dd8770

这种还有救么??目前系统线上运行着,不太可能停掉来修改,有没有什么好的优化办法呢?

另外,这是个 Java 项目,数据库字段下划线,实体接收也用下划线,没有用驼峰,看着不习惯,用什么理由能劝说大家用驼峰呢。。。

14 条回复    2021-09-05 21:40:02 +08:00

chendy

chendy   4 小时 36 分钟前

遇到因为字符串 id 导致的严重性能问题了么?没有的话无所谓,有的话……
下划线就下划线,反正都有名称转换的配置去做这些事情

xupefei

xupefei   4 小时 35 分钟前 via iPhone

字符串有什么问题,为啥要改

chinvo

chinvo   4 小时 34 分钟前

数据库和 json 用蛇式不是很正常么...

字符串 id 不是性能瓶颈就没必要动. 实在要动可以停机维护改成 binary(16) 类型.

9yu

9yu   4 小时 30 分钟前 via iPhone

凭什么要听你的改?

mreasonyang

mreasonyang   4 小时 26 分钟前 via iPhone

数这么设计虽然很多人会说索引性能有问题,但其实大部分场景都遇不到所以还好,真正问题比较大的是你们用的这个 uuid 生成方案是不是可靠。

另外数据库字段一般都是推荐用下划线分割,主要是为了避免忽略大小写等暗坑,当然这个还是要看你们的编码规范是怎么定的。

shiji

shiji   4 小时 23 分钟前 via iPhone

1,这样的主键没毛病,我也觉得不会产生多少性能问题。

2,尊重现有的命名方式吧,现在才想改太晚了,劳民伤财。

xiangyuecn

xiangyuecn   4 小时 6 分钟前

无聊的需求🐶 程序只要能跑,跟代码美观不美观 符不符合你的规范没有任何关系

ericbize

ericbize   2 小时 57 分钟前

1. 不要一厢情愿的去改,数据库卡就卡啊,管你开发什么事情呢

2. 你要看这个 id 涉及到的面有多广,不然你改了,不行,你再改回来,数据不一致,或者有新插入数据,你人都傻。

3. 给你个不成熟的思路, 新建一个表 用 bigint 做主键,然后把 你现在这个表弄过去(就等于加了一个 int 的主键,然后原有的字段保留,只是把 主键改到 int 去),最后再 rename 。(可能途中会涉及到 表停用,之类的问题,自己要在测试环境 和 dba 一起跑通测试,不要直接拿线上去搞,不然你跑路都不好跑!!! )

cweijan

cweijan   2 小时 34 分钟前

mysql 主键就是一种索引, 所以如果数据量不大, 根本无需担心性能问题.
数据库字段用下划线没什么毛病, 实体类用下划线确实不太好, 看你能不能说服项目负责人.

namelosw

namelosw   1 小时 31 分钟前

UUID 不考虑性能其实还挺好用的,ID 是有状态的,UUID 是无状态的。

比如你写一个麦当劳的取餐号,四五位的你就要考虑碰撞所以就要记录发出去那些,收回哪些,不小心就容易出 bug,UUID 的话就当他不碰撞就好了,所以什么也不用记。只是人看 UUID 眼晕,但是机器不会眼晕。

而且一般应用其实都用不上这点极限优化,总有远比这个值得优化的地方。

roundgis

roundgis   1 小时 19 分钟前 via Android

uuid 有什麼問題?

iyaozhen

iyaozhen   1 小时 15 分钟前

uuid 没问题呀,单查询的话

实体接收也用下划线,这个也还行吧,其实这样也好。编程规范核心是统一,如果涉及数据库、json 的都用下划线,其它 java 本身用驼峰,挺好的呀,只要不是混着来

akira

akira   1 小时 6 分钟前

线上好好跑着的东西,为啥要去动他呢。。就因为你看着不习惯么。。
是性能出问题了 还是维护成本过大了? 总要有点理由的啊。。

shintendo

shintendo   19 分钟前

还是工作不饱和

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK