专栏首页架构师之路3篇长文讲“自增ID”,大部分人仍然搞错了!?

3篇长文讲“自增ID”,大部分人仍然搞错了!?

花了3篇文章聊InnoDB自增ID的机制,《批量删除数据,常见的大坑!》中的作业题,仍然90%的人答错,有点出乎意料。

作业题是这样的:

实验步骤如上图:

第一步:建表,设定自增列;

第二步:指定id=1插入,锚定第一行是id是1;

第三步:不指定id,依赖自增机制,插入3行;

画外音:此时id应该变为2,3,4了?

第四步:delete删除所有记录;

画外音:坑就容易出在这里。

第五步:指定id=0插入;

第六步:指定id=1插入;

第七步:不指定id,依赖自增机制,插入1行;

请问,此时表中的三行记录,id分别是多少?

在三篇前序文章:

三类插入

三类插入测验答案

批量删除数据,常见的大坑!

已说明相关知识点的情况下,点赞结果是:

(1)一楼(015):144赞

(2)二楼(156):36赞

(3)三楼(015):14赞

(4)其他(017,012,567,056):20赞

画外音:点赞情况详见《批量删除数据,常见的大坑!》的评论。

批量删除数据,常见的大坑!》一文中已经明确指出:

(1)delete数据后,自增列计数不会从头开始;

(2)truncate数据后,自增列计数会从头开始;

画外音:除此之外,还有很多不同,但和本实验关系不大。

三类插入》一文也明确的指出:

(1)简单插入(simple insert)能够保持自增ID的连续性;

(2)批量插入(bulk insert)可能导致自增ID不连续;

(3)混合插入(mixed-mode insert)在实际执行的时候,才知道是否使用系统生成的自增ID;

三类插入测验答案》一文指出:

(1)自增ID从1开始;

(2)插入记录时,可以自己指定自增ID的值,也可以使用数据库生成的自增ID的值;

(3)如果指定ID为“NULL”或者“0”,会使用数据库生成的自增ID;

画外音:除此之外,文章还分享了很多知识,但和本实验关系不大。

今天,再把过程展开下,希望大家别再搞错。

建表,插入四条数据,再delete所有数据,此时自增ID计数不会归0,下一条插入的行,自增ID会从5开始。

画外音:使用truncate则计数会归0。

指定ID,插入(0, ‘000’),命中“ID为NULL或者0,使用系统自增ID”的策略,故实际记录为(5, ‘000’)。

画外音:下一条插入的行,自增ID会从6开始。

指定ID,插入(1, ‘111’),插入成功。

不指定ID,插入(‘222’),使用系统自增ID,故实际记录为(6, ‘222’)。

故,实验结果,最终的三行记录是:

5,000

1,111

6,222

你答对了吗?

本文分享自微信公众号 - 架构师之路(road5858)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-12-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 分布式ID生成器 | 架构师之路

    一、需求缘起 几乎所有的业务系统,都有生成一个唯一记录标识的需求,例如: 消息标识:message-id 订单标识:order-id 帖子标识:tiezi-id...

    架构师之路
  • 细聊分布式ID生成方法

    一、需求缘起 几乎所有的业务系统,都有生成一个记录标识的需求,例如: (1)消息标识:message-id (2)订单标识:order-id (3)帖子标识:t...

    架构师之路
  • 互联网智能广告系统架构(业务+系统)

    互联网智能广告系统架构 ? (争取用最简单的图,最简洁的语言描述清楚) 一、业务简述 从业务上看整个智能广告系统,主要分为: 1)业务端:广告主的广告后台 2...

    架构师之路
  • 用户的唯一性识别

    不同的设备终端数识别的人方式不同,基本原则都是通过尽量通过各种唯一的ID去作为人的唯一标识,具体如下表:

    GA小站
  • 【AAAI oral】阿里北大提出新attention建模框架,一个模型预测多种行为

    作者:周畅,白金泽,宋军帅,刘效飞,赵争超,陈修司,高军 【新智元导读】本文提出一种基于注意力机制的用户异构行为序列的建模框架,并将其应用到推荐场景中。作者提出...

    新智元
  • 【计算机本科补全计划】图的连通性check by 并查集Union Find

    具体的想法来自一篇写的超好的博客,如果底子不是很好,建议看下面这篇,当然如果可以给我顺手点个赞就更好了!!

    用户1687088
  • 《财富》精选:2014年大数据行业最顶尖的20位明星人才

    大数据不只是要处理很多的数字,还得要通过这些数字建立模型、深入挖掘,并且寻找那些有可能改变企业运营方式的信息。以下谨为大家介绍20位大数据领域的顶尖人才。 Pi...

    小莹莹
  • 数据结构(三):线性表

    该序列中所含的元素个数叫做线性表的长度,用 n表示(n>=0)。当 n=0时,表示线性表是一个空表,即表中不包含任何数据元素。

    渔父歌
  • 【推荐】数据安全是政务大数据开放的核心能力

    日前,克强总理主持召开的国务院常务会议通过了《关于促进大数据发展的行动纲要》,将大数据定位为推动创新创业及经济转型升级的战略性资源,明确政务信息及公共数据要互联...

    小莹莹
  • 滴滴算法笔试题解:多源D点(邻接表+bfs)

    首先题目给出了说明,这棵树一共有n个节点,且边的权重为1,并且有m个特殊节点,虽然题目说了这是一个树,但是要求是找到距离m个特殊节点"均"不超过d的节点,因此如...

    算法工程师之路

扫码关注云+社区

领取腾讯云代金券