为什么很多公司要求 mysql 表主键 id 必须是 long 型?

2016-06-25 19:13:22 +08:00
 eightqueen
int 型已经很大了,有 20 多亿,像用户表用 int 就足够了,用 long 不是浪费吗?
30400 次点击
所在节点    MySQL
51 条回复
hantsy
2016-06-25 22:26:28 +08:00
内部 UUID , 外部 Base58
Ouyangan
2016-06-25 22:29:42 +08:00
@bobuick 有这个道理, 如果说真有性能瓶颈了, 倒说明这产品发展的不错.
gefranks
2016-06-25 22:31:44 +08:00
我司一个产品也是快溢出了 出补丁出的疯掉
ETiV
2016-06-25 22:46:14 +08:00
LoL 还是 DotA (印象中是拳头),之前停机维护,就是因为数据库主键类型选的不够多…
mornlight
2016-06-25 22:50:00 +08:00
@ETiV Dota2 ,比赛场数爆了
zkd8907
2016-06-25 22:54:05 +08:00
腾讯旗下的 QQ 和微信都曾经因为 32 位的问题而专门立项,全公司大改。这个成本不管对于多大的公司来说,都是非常巨大的。
mickeyandkaka
2016-06-26 00:29:05 +08:00
生成全局唯一的 id ,这样不同业务用同一个 id 生成器后,各个子业务方便合并。
Lucups
2016-06-26 00:36:30 +08:00
当你有那么大量级的用户笑都来不及,还怕改?

PS :不要过度设计。
sudoz
2016-06-26 00:40:57 +08:00
@zkd8907 JD 也是,还是商品 sku ,当初没想过会有那么多商品……
Livid
2016-06-26 00:54:14 +08:00
@fising 如果有的应用不生成自己的 User ID ,而直接用第三方的 User ID 的话。
programgou
2016-06-26 01:14:40 +08:00
viator42
2016-06-26 01:37:07 +08:00
Android 的列表 id 值必须定义为 long
公司后台把只有两种值的字段都定义成了布尔类型,简直是不要命
BB9z
2016-06-26 01:54:52 +08:00
用户 ID 一般是够了,但用户产生的数据可能要多两个甚至三个数量级,业务发展好的两三年可能就需要考虑了。
realpg
2016-06-26 02:04:00 +08:00
说明这个公司用的不是 PHP ……
msg7086
2016-06-26 06:44:43 +08:00
如果你的系统不打算长期用、大规模用的话,当然可以用 int 。
人家公司是打算做大做强的,当然就用 long 了咯。
你看看现在的 IPv4 不就是 int 么, IP 分配都搞成什么鸟样了……
beginor
2016-06-26 08:09:53 +08:00
id 用时间字符串,精确到毫秒后面的三位数,类似这样 201606260812123654 便于排序和查看
zealinux
2016-06-26 10:10:12 +08:00
图省事就用 int ,
(以后有你哭的,不要说要改的时候,你跑了哦。)

图未来就用 long
hggg
2016-06-26 11:46:27 +08:00
没遇到过 int 不够(T⌓T),哭晕在厕所
quericy
2016-06-26 12:02:02 +08:00
我们就是用的 int ,感觉到不了要用 long 的时候。。。。
三方登录单独建表维护
tianice
2016-06-26 12:25:07 +08:00
很多业务表都会有 userId ,如果后期再改,修改量巨大。
很多公司为了业绩好看,会自己做一些数据,你懂得。。。

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

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

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

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

© 2021 V2EX