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

2016-06-25 19:13:22 +08:00
 eightqueen
int 型已经很大了,有 20 多亿,像用户表用 int 就足够了,用 long 不是浪费吗?
30429 次点击
所在节点    MySQL
51 条回复
fuxkcsdn
2016-06-26 14:07:57 +08:00
PHP 果然是世界上最好的语言
这算啥事啊,你改下数据库表结构就得啦,关我代码鸟事
starqoq
2016-06-26 15:54:47 +08:00
我记得 Dota2 的服务器曾经就为对战记录的主键溢出问题下线修补过一次。

官方公告还说 “我们 2038 年会再见面的”。
Cloudee
2016-06-26 16:54:04 +08:00
反过来想,为啥每条记录多 4 个字节算浪费...等业务量大到需要计较每条记录 4 字节的空间,也要笑开花了吧
daydaysay
2016-06-26 18:02:13 +08:00
50 亿行记录,用 long ,也就 4 * 21 亿字节 , 8G 硬盘。 内存不知道,多 8G ?

其实既然有人提出出了用 long , 我觉得也不麻烦,是好事。
daydaysay
2016-06-26 18:03:17 +08:00
是多用 4 * 21 亿字节。 前一条说得不完整
qiukun
2016-06-26 18:57:38 +08:00
typedef 一下?
doushiyinweini
2016-06-27 09:18:00 +08:00
随便,对于拥有几十亿用户的公司对于改个数据类型都是小儿科。
techme
2016-06-27 11:27:39 +08:00
嗯,数据库有一些“浪费”是必要的,之前设计一个任务报告的表最多限制能写 2000 字,结果有人写了 8000 多字,页面保存不上去把我们骂的那个惨啊
JQ
2016-06-27 14:43:20 +08:00
长度不够的情况,遇到过 2 次。
symbo
2016-06-29 20:02:09 +08:00
@doushiyinweini 成本挺高的。修改,测试,上线,耗费的时间和人力不少。
arist
2017-05-16 17:53:08 +08:00
前前任使用了一个诡异的算法在自增主键上生成 id, 前任后来把这段代码废弃,使用默认的自增 id, 不到一周,现任发现游戏新用户注册不了, 检查后发现了 int 溢出, 持续了几个小时,留下一大波差评,惨痛的教训。

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

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

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

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

© 2021 V2EX