文章插图
分析:
- 刚开始设置 row_id 为 1 , 插入三条数据 1、2、3 的 row_id 也理应是 1、2、3;这是没问题的 。
- 接着设置 row_id 为最大值 , 紧跟着插入三条数据 。这时的数据库结果是:4、5、6、3;你会发现 1、2 被覆盖了 。
- row_id 达到后最大值后插入的值 4、5、6 的 row_id 分别是 0、1、2;由于 row_id 为 1、2 的值已存在 , 所以后者的值 5、6 会覆盖掉 row_id 为 1、2 的值 。
04 总结数据库自增主键用完后分两种情况:
- 有主键 , 报主键冲突
- 无主键 , InnDB 会自动生成一个全局的 row_id 。它到达最大值后会从 0 开始算 , 遇到 row_id 一样时 , 新数据覆盖旧数据 。所以 , 我们还是尽量给表设置主键 。
我的回答除了以上解决方法外 , 还提到在业务开发中 , 我们不会等到主键用完那天就已经分库分表了 , 基本不会遇到这种情况 。
这时 , 面试官可能会问你分库分表咋处理 , 如果你不会就不要主动提了 , 点到即止 。
05 参考文章
- blog.csdn.net/weixin_39640090/article/details/113227742
- blog.csdn.net/qq_35393693/article/details/100059966
- time.geekbang.org/column/article/69862
原文链接:
https://mp.weixin.qq.com/s/1gmpJqBmCBsNPlLbrN0Q7Q
【面试官:数据库自增 ID 用完了会咋样?】
推荐阅读
- 数据库连接池为什么首选Druid
- 鸿蒙系统官方测试:请摘掉你的有色眼镜,看官方的正确答案
- 严嵩是不是宦官,严嵩与魏忠贤是一个朝代吗
- mysql数据库的主从同步,实现读写分离
- 这个牛逼哄哄的数据库开源了
- 刘备登基后官职最大的是谁,刘备称帝后官职排名
- 求职|2022国考面试技巧:公务员面试中求职动机如何说
- 蚂蚁开源 OceanBase,开源分布式数据库又迎新玩家
- OceanBase开源,11张图带你了解分布式数据库的核心知识
- 某厂面试:如何优雅使用 SPI 机制