怎么会没问题呢,业务量不大的话够用当然是 ok 的,业务数据如果多的情况下,回滚导致的空洞会让某个表的可承载数据量减少,例如实现的时候有 bug 或者漏洞,导致大批量的回滚操作,浪费了自增 id 的号段,原本能存放下 18446744073709551615 条数据(数字随便编的,记不准了)现在可能只能放下一半,或者更少的数据了。
简单应用、维护得当可能看不出什么问题,但是稍不注意就会某一天突然报错了,而且是完全意料不到的,因为开发者可能认为比如 1 年内最多也就产生几千万条数据,单表轻轻松松,但是却因为实现上的缺陷导致 id 提前耗光,没加监控或者处理的话这在生产环境就是个 P0 的故障,数据写入不了。
RedisMasterNode
2022-12-07 20:25:22 +08:00
我觉得最重要的是,开发者有没有意识到自增 id 的空洞存在、回滚会浪费多少的 id ,浪费之后的 id 字段类型( int 、bigint )是否还够用,评估好的话完全 ok 的,只是怕有些时候是意料之外的空洞。
我们以前就出过这样的问题(意料之外,没监控,没及时发现),代价是把 id 列修改成字符串临时解决了(很不好的实践)。