mysql 自增 不是主键_程序员经典面试题,MySQL自增主键为什么不连续

在我们日常使用Mysql中,如果不是特殊的业务需要,一般我们都会使用自增主键,自增主键的好处可以在插入的时候尽量地减少页分割,增加Mysql的写入效率。我们有时候就会发现,自增主键并不是连续递增的,为什么有时候会出现自增主键的空洞呢?

即便是使用自增主键的表,也是可以指定主键的。假设当前的自增主键是X,我们指定的主键是Y,假如Y

第二种出现间隔的原因,是因为Mysql插入失败了。首先我们要了解自增主键的原理,当我们向一张主键自增的表中插入数据的时候,如果Mysql发现你没有带主键,就会去自增表里面申请一个主键,当申请成功之后,就会拿着这个主键去做真实的Insert操作,但是在这个过程中,Insert可能会失败,例如主键或者唯一键冲突等。或者出现事务回滚,Mysql是不会回滚对应的自增主键的值的。为什么Mysql会这么做呢?这个并不难理解,因为当我们申请主键的时候,其他事务也会申请主键,假如事务发生回滚的时候,是否还要考虑其他事务的状态呢?这是个非常复杂又消耗性能的问题,另一方面,自增主键比较大的作用是避免页分割,我们只需要数据是递增而无需连续。

第三种出现间隔的原因,是Mysql的主键申请机制。假如我们是批量插入的,那么批量申请多个主键的效率会比逐个申请要快得多得多。按道理来说,Mysql是有多少条新数据就申请多少个自增主键的,但是有一些情况,Mysql并不知道最终插入的数据有多少,例如Insert...Select语句。Mysql的申请策略是使用倍增法去申请,所以,假如Insert...Select的结果是4条数据,那么最终会申请1+2+4=7个主键值,就会有3个浪费了。

好了,今天我们了解了Mysql数据出现空洞的几个原因,学习到了么?欢迎大家关注我,共同学习,共同进步。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/507874.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎么彻底重装清空电脑_电脑开不了机怎么重装系统?不用送去维修店啦!

小白系统免费的人工客服点击联系电脑无法启动的时候怎么办呢?很多朋友直接送去电脑城了,但是去一次就如同在百度上查询自己得了什么病是一样的,查一下自己不舒服就癌症了,电脑城查一下就问你卖多少钱,费时费力&#xf…

安装mysql无法登录_【windows 下安装 mysql-server 无法登录问题解决】

----------------------------- 无感的首行 -----------------------------新版 mysql-server 5.7 安装后发现无法使用 mysql -uroot (-p) 来登录,查了下文档发现新版在安装时会初始化一个密码放在启动的错误文件里,错误文件的路径 %mysql-server-dir%da…

日语输入法电脑版_日语轻松入门小百科

如果你一直以来都对日语抱有强烈的兴趣,那么就赶紧跟我一起轻松入门吧~科普之一:日语五十音图什么是假名?什么是五十音图?日语的字母叫做假名,每个假名代表一个音节。假名有两种书写方式,即平假名和片假名&…

jta mysql_JTA 使用 MySQL 分布式事务

假定在MySQL实例1上有表create table person(id int,name varchar(32))MySQL实例2上也有一张同样的表,现在从实例1中的 person 表中删除一条数据,并把这条数据插入到实例2的表中,这两个操作在同一个事务中,因为跨越了数据库实例&a…

mysql load average_紧急求助:load average太高了!!

站点同时在线人数300人左右,top出来的load average超过4,有时达到了8点多!sleeping进程达到了三百多!大部分是来自apache,导致房问速度很慢!!不知问题出在哪里,请高手赐教,谢谢&…

a jni error has occurred_A-08 幂函数、有理函数、代数函数

欢迎光临我的专栏《微积分学习之旅》,一起学习,共同提高。函数是微积分的基础,我们已经学习了直线函数和多项式函数,本篇中我们继续学习幂函数、有理函数和代数函数。幂函数(Power Functions)如果一个函数形…

mysql 求两列数据组合_mysql – 将两个具有不同列数的查询组合在一起

我有两个查询要组合成单个输出,我不能使用UNIOn,因为它们具有不同的列数.该表是ref,字段id为refid cellid cat,其中包含整数查询1:查找每个唯一cellid的总行数SELECT cellid,COUNT(*) totalcount,cat FROM rel GROUP BY cellid查询2:为每个唯一的cellid查…

echarts 浏览器兼容性_谷歌浏览器不再使用quot;黑名单quot; / iPhone可能放弃lightning充电口//微软中国被列为被执行人/QQ 音乐上线...

# 避免种族歧视 ,谷歌浏览器将不再使用"黑名单"6月9日报道,由于全球各地反对种族歧视的呼声高涨,谷歌决定修改Chrome浏览器中可能引发种族歧视联想的表述,包括“黑名单”、“白名单”等词。报道称,谷歌将通过…

python输出结果每5个换行_python for循环 - python基础入门(11)

文章首发微信公众号,微信搜索:猿说python在python开发中,除了前篇文章介绍的while循环还有一个for循环也经常使用,两者使用都是大同小异,for循环的使用相对于while循环更加灵活,下面我们一起来了解下具体区…

cad钣金展开插件_钣金折弯展开的计算方法汇总

提醒:点上方↑↑↑“钣金学习网”免费关注90度折弯折弯系数最简单的计算方法就属90度折弯系数经验公式:1.7倍料厚计算方法了。这个公式是怎么使用的?用在90钣金折弯加工中,一个直角弯减去1.7倍的料厚。比如:材料是1mm铁…

pcb设计实战与应用智能手机_一种针对毫米波雷达天线应用而优化设计的PCB层压板...

常见的复合材料印制电路板(PCB)其介质层大多采用玻璃纤维作为填充料,但是由于玻璃纤维特殊的编织结构,导致PCB板局部的介电常数(Dk)会发生变化。尤其是在毫米波(mmWave)频率下,较薄层压板的玻璃编织效应会更加明显,Dk的局部不均匀…

mysql 5.5 替换字符_MySQL replace函数替换字符串语句的用法

MySQL replace函数我们经常用到,下面就为您详细介绍MySQL replace函数的用法,希望对您学习MySQL replace函数方面能有所启迪。最近在研究CMS,在数据转换的时候需要用到mysql的MySQL replace函数,这里简单介绍一下。比如你要将表 t…

GPS 校验和 代码_Linux recovery 移除签名校验

原创作者:王锐,多年 Linux 系统、龙芯平台移植与优化研发经验,Linux Contributor、Mozillian。背景某个设备配套的刷机程序是个 Linux recovery kernel,刷机过程会先从U盘加载刷机脚本,仅在签名校验通过后才执行脚本。…

mysql xp系统时间_mysql时间类型year

date:年月日datetime:年月日时分秒,保存确定的时间点的时候,存储形式yyyy-mm-dd hh:MM-dd,暂用8个字节timestamp:时间从.存储时是整形数字,表现形式是yyyy-mm-dd hh:MM-dd,暂用4个字节,取值范围,1970-01-01 00:00:00到2038year:1个字节 1901-2155,可以用0000表示默认值,如果输…

shell su 密码_[SU模型] 59个公共卫生间

介绍 - Introduce名称|59个公共卫生间格式|skp大小|127 MB获取方式|免费获取嗨,大家好~今天给大家分享的是59个公共卫生间模型。文末获取素材- 部分素材内容的预览图如下 -A | ZD有一个计划:前期在公众平台…

mysql 备份成文件的脚本_Mysql自动全量备份脚本

数据的安全性是至关重要的,任何数据的丢失都可能产生严重的后果。轻则程序逻辑出现BUG,重则程序崩溃,数据丢失。造成数据丢失的原因,主要有程序错误、人为错误、计算机失败、磁盘失败、灾难(如起火、地震)和偷窃。数据库日常备份工…

python中使用什么导入模块-Python中使用语句导入模块或包的机制研究

这篇文章讨论了Python的from import *和from import *,它们怎么执行以及为什么使用这种语法(也许)是一个坏主意。 从一个模块导入全部 from import * means意味着“我希望能访问中我有权限访问的全部名称”。例如以下代码something.py&#x…

mysql触发器的要素_MySQL触发器

触发器是一类特殊的事务,可以监视某种数据操作(insert,update,delete),并触发相关操作(insert,update,delete)触发器创建之四要素:监视地点(table)监视事件(insert,update&#xff0…

您与此网站建立的连接不安全_dede网站密码忘记找回服务为先

dede网站密码忘记找回服务为先网站安全是现在一个非常重要的课题。基本上,互联网上的所有用户群都对自己的隐私信息和企业相关信息更感兴趣。因此,无论是搭建网站还是做一些平台,用户对网站服务器和网站空间安全都有很高的要求。对于网站服务…

python入门必备知识_python入门基本知识

1. 什么是语言语言是一个事物与另外一个事物沟通的介质。python则是人(程序员)与计算机沟通的介质。2. 什么是编程编程就是程序员将自己想要让计算机做的事情用编程语言翻译出来写到一系列的文件中。这一系列的文件称之为程序/软件。3. 为何要编程编程的目的就是让计算机按照程…