您现在的位置是:亿华云 > IT科技类资讯
MySQL自增主键为何不是连续的呢?
亿华云2025-10-09 01:17:46【IT科技类资讯】2人已围观
简介大家好,我是小龙。之前阿里二面问过我这样一个问题:面试官:"MySQL主键你一般怎样用?"心想:"嘿嘿,面试官肯定想问InnoDB引擎索引特性相关知识!“小龙:”平时主键我一般用自增主键!因为自增ID
大家好,自增主我是连续小龙。之前阿里二面问过我这样一个问题:
面试官:"MySQL主键你一般怎样用?自增主"
心想:"嘿嘿,面试官肯定想问InnoDB引擎索引特性相关知识!“
小龙:”平时主键我一般用自增主键!因为自增ID有序,连续会按顺序往最后插入,自增主而UUID无序,连续随机生成,自增主随机插入,连续会造成频繁页分裂,自增主内存碎片化,连续大量随机IO,自增主巴拉巴拉。连续。自增主。连续。自增主“
心想:“这波稳啦!“
然后,面试官又来一套组合拳
面试官:”en!好,那你知道自增主键是否严格递增呢?“
心想:”这还不简单,肯定递增啊!不对,仔细一想,有一些情况下自增主键是断开的,于是亿华云“
小龙:“‘肯定不是递增的啊!"
以为到这里结束啦,只是考考我是否实际真正用过,没想到还是天真啦!
面试官:”那你知道为啥不是严格递增的吗?换句话来说,为何不是连续的?“
小龙:”裂开!tm还真不知道,不会真要考那么底层吧!我去“
于是骂骂咧咧结束了这个话题!
但是由于其他问题回答的也可以,还是过啦!
不过,既然遇到啦这个问题,下来查阅了资料,还是想分享给大家!
1、前文
众所周知,由于自增主键可以让主键索引尽量地保持递增顺序插入,网站模板避免了页分裂,大量的随机IO。自增主键不连续。
这是大家已经熟知的知识点,但是,可能也有大部分朋友和之前的小龙一样不知道为何自增主键不是严格递增的?
今天这篇文章,我们就来说说这个问题,看看什么情况下自增主键会出现 “断层”?
为了更加形象,这里创建一个表xl_tb,其中id是自增主键字段、a是唯一索引,然后插入一条数据,我们再查看它的表结构。
CREATE TABLE `NewTable` ( `id` int(11) NOT NULL AUTO_INCREMENT , `a` int(11) NULL , `b` int(11) NULL , PRIMARY KEY (`id`), UNIQUE INDEX `a` (`a`) USING BTREE ); insert into xl_tb values(null, 1, 1) mysql> show create table xl_tb\G;很赞哦!(4833)
相关文章
- 域名不仅仅是一个简单的网站。对于有长远眼光的公司来说,在运营网站之前确定一个优秀的域名对有长远眼光的公司来说是非常重要的。这对今后的市场营销、产品营销和企业品牌建设都具有十分重要的意义。优秀的域名是企业在市场竞争中获得持久优势的利器。
- NEC开始打造日本国内规模最大的AI研究超级计算机
- 摩尔线程与浙江华数战略合作:助力“智慧浙江”实现
- 英特尔On技术创新峰会:助力开发者解决当前和未来的挑战
- cm域名有什么独特之处?新人要了解cm域名哪些?
- 为分布式云而生,新华三UIS 8.0以融合实力加速行业云上转型
- 全国数据中心完成顶层布局
- 到2031年,绿色数据中心市场将超过3000亿美元
- 要如何了解反向解析和域名解析?新手该怎么去操作?
- 数据中心的三个基本安全实践