之前面试遇见一题,问我 MySQL 主键 ID 将要超过 bigint 上限的时候该怎么办

2021-07-26 17:37:22 +08:00
 goodboy95
实际上面试官开始没说 bigint,只说超过上限,然后我随口问了一句“是不是连 bigint 都会超过上限?”,他说是。

然后我就有点蒙了,bigint 往上好像找不到更大的整数变量了,用 string 的话性能基本不可接受。

做分库分表的话,好像是可行,不过越想越麻烦,分出来的每个表主键 ID 需要从 1 重新开始计,这样的话感觉就需要考虑根据 ID 精准查询数据的情况,是不是需要另建一个 string 列用来存数据编号,分完表之后怎样做到新旧查询方式的无缝对接之类的,不过目前能想到的也只有这种方式了。

不知道还有人能想到什么好方案吗?
3628 次点击
所在节点    问与答
23 条回复
Jooooooooo
2021-07-26 17:41:27 +08:00
bigint 都超了再改造呗, 一般不考虑这种问题

其实是可以事先简单计算大概到了什么时候会超出 long 这种长度 (比如是 20 年后, 那现在就去考虑明显是过度设计

通用性和实现难读肯定是需要取舍的
leafre
2021-07-26 17:51:41 +08:00
数据量乳齿大,就别往 MySQL 里塞了
Maboroshii
2021-07-26 17:52:27 +08:00
提高上限!
xiangyuecn
2021-07-26 17:55:50 +08:00
年薪没一个亿 就不要耽误双方时间了🐶
yor1g
2021-07-26 18:09:59 +08:00
bigint 不是 100 年都跑不满么
lakehylia
2021-07-26 18:16:25 +08:00
扩容改造呗
soy
2021-07-26 18:16:39 +08:00
Key size 都有 2^63 * 8 = 73EB 了。这么大的数据量肯定不是 MySQL 该干的活了。BigTable 搞起!
dqzcwxb
2021-07-26 18:19:06 +08:00
bigint 最大数值 9223372036854775807,每秒 1 亿条数据量新增需要跑 2924 年
这不是造火箭这么简单,这是奔着星际航行去,值得尊敬!
sytnishizuiai
2021-07-26 18:26:21 +08:00
@dqzcwxb 牛逼
luckyrayyy
2021-07-26 18:29:25 +08:00
他是想问分库分表吗
chenset
2021-07-26 18:58:25 +08:00
@dqzcwxb 牛逼
fkdtz
2021-07-26 19:16:20 +08:00
@dqzcwxb 哈哈哈,我开始好奇是哪家公司了
iceheart
2021-07-26 19:38:24 +08:00
这问题,当你想解决方案的时候你就错了
kekxv
2021-07-26 19:45:47 +08:00
使用两个 bigint 联合约束作为主键,他要是还说超了,那可以回他:我感觉我现在还不配做那么大的项目🐶
hst001
2021-07-26 21:09:33 +08:00
能把 bigint 用满的公司可能还是头一次见
0ZXYDDu796nVCFxq
2021-07-26 22:40:56 +08:00
哈哈哈,上次有个兄弟问怎么把 C(400,1000)的所有组合数在 10 秒内打印出来
数据量比这个还大 n 倍
akira
2021-07-26 23:11:21 +08:00
考察的重点应该不是 bigint 了啦 ,不要扣字眼去了
hushao
2021-07-26 23:40:50 +08:00
@goodboy95 抖个机灵,你应该先弱弱的问下他,贵司主键 ID 是不是从 bigint 上限-1 开始自增的能用完[逃~]
yhxx
2021-07-26 23:53:09 +08:00
第一反应是淘宝订单号那个溢出问题
然后,bigint ???
他是要用来存 ipv6 的吗?
nuistzhou
2021-07-27 00:18:43 +08:00
你随口一问是不是会超过 bigint 上限,估摸着他也没算,随口一答罢了。你应该直接跟他算账的,哈哈

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

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

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

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

© 2021 V2EX