精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

MySQL小知識點:自增主鍵為什么不是連續的?自增id用完怎么辦?

數據庫 MySQL
今天我們就來說說這個問題,看看什么情況下自增主鍵會出現 “空洞”?為了便于說明,我們創建一個表t,其中id是自增主鍵字段、c是唯一索引。

自增主鍵為什么不是連續的

今天我們就來說說這個問題,看看什么情況下自增主鍵會出現 “空洞”?

為了便于說明,我們創建一個表t,其中id是自增主鍵字段、c是唯一索引。

CREATE TABLE `t` (
`id` int(11) NOTNULLAUTO_INCREMENT,
`c` int(11) DEFAULTNULL,
`d` int(11) DEFAULTNULL,
PRIMARY KEY (`id`),
UNIQUE KEY `c` (`c`)
) ENGINE=InnoDB;

自增值保存在哪兒?

在這個空表t里面執行insert into t values(null, 1, 1);插入一行數據,再執行show create table命令,就可以看到如下圖所示的結果:

圖1 自動生成的AUTO_INCREMENT值圖1 自動生成的AUTO_INCREMENT值

可以看到,表定義里面出現了一個AUTO_INCREMENT=2,表示下一次插入數據時,如果需要自動生成自增值,會生成id=2。

其實,這個輸出結果容易引起這樣的誤解:自增值是保存在表結構定義里的。實際上,表的結構定義存放在后綴名為.frm的文件中,但是并不會保存自增值。

不同的引擎對于自增值的保存策略不同。

  • MyISAM引擎的自增值保存在數據文件中。
  • InnoDB引擎的自增值,其實是保存在了內存里,并且到了MySQL 8.0版本后,才有了“自增值持久化”的能力,也就是才實現了“如果發生重啟,表的自增值可以恢復為MySQL重啟前的值”,具體情況是:在MySQL 5.7及之前的版本,自增值保存在內存里,并沒有持久化。每次重啟后,第一次打開表的時候,都會去找自增值的最大值max(id),然后將max(id)+1作為這個表當前的自增值。

舉例來說,如果一個表當前數據行里最大的id是10,AUTO_INCREMENT=11。這時候,我們刪除id=10的行,AUTO_INCREMENT還是11。但如果馬上重啟實例,重啟后這個表的AUTO_INCREMENT就會變成10。

也就是說,MySQL重啟可能會修改一個表的AUTO_INCREMENT的值。

在MySQL 8.0版本,將自增值的變更記錄在了redo log中,重啟的時候依靠redo log恢復 重啟之前的值。 理解了MySQL對自增值的保存策略以后,我們再看看自增值修改機制。

自增值修改機制

在MySQL里面,如果字段id被定義為AUTO_INCREMENT,在插入一行數據的時候,自增值的行為如下:

1. 如果插入數據時id字段指定為0、null 或未指定值,那么就把這個表當前的AUTO_INCREMENT值填到自增字段;

2. 如果插入數據時id字段指定了具體的值,就直接使用語句里指定的值。根據要插入的值和當前自增值的大小關系,自增值的變更結果也會有所不同。假設,某次要插入的值是X,當前的自增值是Y。

1. 如果X

2. 如果X≥Y,就需要把當前自增值修改為新的自增值。

自增值的修改時機

假設,表t里面已經有了(1,1,1)這條記錄,這時我再執行一條插入數據命令:

insert into t values(null, 1, 1);

這個語句的執行流程就是:

1. 執行器調用InnoDB引擎接口寫入一行,傳入的這一行的值是(0,1,1);

2. InnoDB發現用戶沒有指定自增id的值,獲取表t當前的自增值2;

3. 將傳入的行的值改成(2,1,1);

4. 將表的自增值改成3;

5. 繼續執行插入數據操作,由于已經存在c=1的記錄,所以報Duplicate keyerror,語句返回。

對應的執行流程圖如下:

圖2 insert(null, 1,1)唯一鍵沖突圖2 insert(null, 1,1)唯一鍵沖突

可以看到,這個表的自增值改成3,是在真正執行插入數據的操作之前。這個語句真正執行的時候,因為碰到唯一鍵c沖突,所以id=2這一行并沒有插入成功,但也沒有將自增值再改回去。所以,在這之后,

唯一鍵沖突是導致自增主鍵id不連續的第一種原因。同樣地,事務回滾也會產生類似的現象,這就是第二種原因。

自增id用完怎么辦?

MySQL里有很多自增的id,每個自增id都是定義了初始值,然后不停地往上加步長。雖然自然數是沒有上限的,但是在計算機里,只要定義了表示這個數的字節長度,那它就有上限。比如,無符號整型(unsigned int)是4個字節,上限就是232 -1。

既然自增id有上限,就有可能被用完。但是,自增id用完了會怎么樣呢?

表定義自增值id

表定義的自增值達到上限后的邏輯是:再申請下一個id時,得到的值保持不變。 我們可以通過下面這個語句序列驗證一下:

create table t(id int unsigned auto_increment primary key) 
auto_increment=4294967295;
insert into t values(null);
//成功插入一行 4294967295
show create table t;
/* CREATE TABLE `t` (
`id` int(10) unsigned NOTNULLAUTO_INCREMENT,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4294967295;
*/
insert into t values(null);
//Duplicate entry '4294967295' for key 'PRIMARY'

可以看到,第一個insert語句插入數據成功后,這個表的AUTO_INCREMENT沒有改變(還是4294967295),就導致了第二個insert語句又拿到相同的自增id值,再試圖執行插入語句,報主

鍵沖突錯誤。

4294967295不是一個特別大的數,對于一個頻繁插入刪除數據的表來說,是可能會被用完的。因此在建表的時候你需要考察你的表是否有可能達到這個上限,如果有可能,就應該創 建成8個字節的bigint unsigned。

InnoDB系統自增row_id

如果你創建的InnoDB表沒有指定主鍵,那么InnoDB會給你創建一個不可見的,長度為6個字節的row_id。InnoDB維護了一個全局的dict_sys.row_id值,所有無主鍵的InnoDB表,每插入一行數據,都將當前的dict_sys.row_id值作為要插入數據的row_id,然后把dict_sys.row_id的值加1。

實際上,在代碼實現時row_id是一個長度為8字節的無符號長整型(bigint unsigned)。但是,InnoDB在設計時,給row_id留的只是6個字節的長度,這樣寫到數據表中時只放了最后6個字節,所以row_id能寫到數據表中的值,就有兩個特征:

1. row_id寫入表中的值范圍,是從0到248 -1;

2. 當dict_sys.row_id=248 時,如果再有插入數據的行為要來申請row_id,拿到以后再取最后6個

字節的話就是0。

也就是說,寫入表的row_id是從0開始到248 -1。達到上限后,下一個值就是0,然后繼續循環。當然,這個值本身已經很大了,但是如果一個MySQL實例跑得足夠久的話,還是可能達到這個上限的。在InnoDB邏輯里,申請到row_id=N后,就將這行數據寫入表中;如果表中已經存在row_id=N的行,新寫入的行就會覆蓋原有的行。

責任編輯:華軒 來源: 今日頭條
相關推薦

2024-11-11 00:00:06

MySQLID數據類型

2023-10-17 09:41:04

自增主鍵MySQL

2023-12-26 01:09:28

MySQL存儲釋放鎖

2020-03-28 15:50:18

數據庫自增ID維護

2019-09-18 15:49:06

MySQL數據庫面試官

2021-09-28 17:48:20

MySQL主鍵索引

2020-04-21 15:59:50

MySQL自增主鍵數據庫

2024-06-14 08:34:36

2022-06-24 09:22:15

MySQL自增id

2022-12-06 09:00:11

MySQL自增主鍵查詢

2024-12-25 15:32:29

2020-05-06 15:02:58

MySQL數據庫技術

2009-09-24 13:49:31

Hibernate自增

2024-05-29 09:05:17

2024-07-01 09:00:16

2025-07-03 02:15:00

MySQLID+UUIDB+樹

2018-12-14 15:35:20

MySQL索引數據庫

2022-06-03 08:12:52

InnoDB插入MySQL

2022-11-08 19:30:52

DjangoID自增

2010-08-31 08:38:55

SQL Server
點贊
收藏

51CTO技術棧公眾號

日韩视频免费大全中文字幕| 亚洲国产一区二区三区| 国产日韩av在线播放| 日本一级片免费| 国产厕拍一区| 日本高清不卡视频| 99亚洲精品视频| 日韩中文字幕观看| 日本中文一区二区三区| 欧美成人手机在线| 亚洲 小说 欧美 激情 另类| 婷婷精品久久久久久久久久不卡| 亚洲一区中文日韩| 日韩中文字幕一区二区| 亚洲国产精品二区| 免费在线一区观看| 国内精品久久久久久久| 黑人狂躁日本娇小| 最新亚洲精品| 日韩视频免费直播| 好男人www社区| wwww亚洲| 中文字幕亚洲不卡| 欧美在线播放一区| 欧美熟女一区二区| 综合久草视频| 午夜视频一区在线观看| 亚洲人一区二区| 亚洲欧洲综合在线| 国产精品一区免费在线观看| 国产大片精品免费永久看nba| 久草免费新视频| 久久中文字幕av| 亚洲女人初尝黑人巨大| 中文字幕一区二区三区乱码不卡| 六九午夜精品视频| 色综合久久精品| 极品粉嫩国产18尤物| av在线免费网站| 国产精品伦理一区二区| 欧美污视频久久久| 日韩国产福利| 99视频精品全部免费在线| 91在线观看免费观看| 中文无码av一区二区三区| 99香蕉国产精品偷在线观看 | 久久精品视频一区二区三区| 99国产在线视频| av无码精品一区二区三区宅噜噜| 免费日本视频一区| 国产精品久久久久91| 91精品国产综合久久久蜜臀九色| 亚洲看片一区| 97色伦亚洲国产| 日韩成人在线免费视频| 亚洲精品专区| 欧美性受xxxx白人性爽| 日韩欧美高清在线观看| 国产视频一区三区| 2023亚洲男人天堂| 日韩精品一区二区亚洲av| 媚黑女一区二区| 国产精品久久久av| 日批视频免费观看| 免费看精品久久片| 成人国产精品色哟哟| 国产女同91疯狂高潮互磨| 国精产品一区一区三区mba桃花 | 伊人开心综合网| 在线观看av的网址| 欧美大片黄色| 五月天亚洲精品| 成年人免费在线播放| 老司机成人影院| 欧美视频一区在线| 在线免费观看av网| youjizz欧美| 国产视频精品自拍| 免费网站在线高清观看| 欧美国产美女| 久久久久久久久久久久久久久久久久av| 国产手机在线视频| 日韩精品91亚洲二区在线观看 | 欧美激情在线观看视频| 啦啦啦免费高清视频在线观看| 母乳一区在线观看| 国产精品丝袜高跟| 亚洲国产精品视频在线| 久久午夜老司机| 伊人av成人| 国产偷倩在线播放| 在线观看网站黄不卡| 无套内谢丰满少妇中文字幕| 九九热播视频在线精品6| 亚洲性日韩精品一区二区| 搜索黄色一级片| 野花国产精品入口| 91精品综合视频| 蜜桃91麻豆精品一二三区| 久久久99久久| 隔壁人妻偷人bd中字| 日本欧美不卡| 亚洲国产成人精品电影| 久久一级免费视频| 99国产精品视频免费观看一公开| 国产男女猛烈无遮挡91| 亚洲 欧美 激情 另类| 最新中文字幕一区二区三区| 欧美一区二区三区爽大粗免费| 欧美美女被草| 日韩精品极品毛片系列视频| 男女做暖暖视频| 久久综合图片| 狠狠干一区二区| 日本www在线| 婷婷久久综合九色综合伊人色| 亚洲xxx在线观看| 国产乱码精品一区二区亚洲| 欧美乱大交xxxxx| 中文字幕乱码视频| 91啪九色porn原创视频在线观看| 黄色一级片av| 中文幕av一区二区三区佐山爱| 亚洲欧洲一区二区三区在线观看| 久久精品99国产精| 国产麻豆一精品一av一免费| 亚洲a∨一区二区三区| 国产无遮挡裸体视频在线观看| 欧美电影一区二区三区| 男人的天堂官网| 六月天综合网| 久久av一区二区| 国产啊啊啊视频在线观看| 欧美福利一区二区| 欧美日韩生活片| 爽爽淫人综合网网站| 国产三级精品在线不卡| 黄页在线观看免费| 日韩视频在线一区二区| 538精品在线观看| 国产一区二区在线视频| 天天成人综合网| 国产精品亚洲成在人线| 中文字幕亚洲字幕| 国产精品51麻豆cm传媒| 国产色爱av资源综合区| 日本老熟妇毛茸茸| 欧美成人中文字幕在线| 亚洲最大激情中文字幕| av中文在线| 欧美午夜寂寞影院| 三年中国中文观看免费播放| 老司机亚洲精品| 欧美最大成人综合网| 美女100%一区| 国产亚洲精品成人av久久ww| 久久人人爽人人爽人人片av免费| 久久久av毛片精品| 亚洲77777| 97精品视频在线看| 91中文字幕一区| 色帝国亚洲欧美在线| 欧美一级高清大全免费观看| 黄色a级片在线观看| 国产精品小仙女| 国产青草视频在线观看| 爱高潮www亚洲精品| 91精品国产色综合久久不卡98口| 四虎精品成人影院观看地址| 欧美性极品xxxx娇小| 天天躁夜夜躁狠狠是什么心态| 青青草97国产精品免费观看 | 香蕉视频网站在线| 色综合久久久久综合体| 国产大屁股喷水视频在线观看| 国产精品亚洲一区二区三区妖精| 成人午夜视频在线观看免费| 一区三区在线欧| 成人av电影天堂| 97天天综合网| 在线视频日本亚洲性| aaaa一级片| 欧美日韩亚洲国产一区 | 成人免费一区二区三区视频| 日韩av加勒比| 国产日韩欧美在线播放不卡| 五月天久久综合网| 97一区二区国产好的精华液| 国产999精品久久久影片官网| 蜜芽在线免费观看| 亚洲第一页自拍| 伊人久久一区二区| 午夜久久久影院| 国产激情av在线| 99久久综合狠狠综合久久| 欧美黄色性生活| 亚洲国产导航| 在线播放豆国产99亚洲| 激情视频极品美女日韩| 成人a级免费视频| 在线天堂新版最新版在线8| 波霸ol色综合久久| 欧洲亚洲在线| 日韩欧美在线1卡| 一级片在线免费播放| 亚洲国产一区二区三区| 四虎地址8848| 国产婷婷一区二区| 久久久久久久人妻无码中文字幕爆| 丝袜美腿成人在线| 美脚丝袜脚交一区二区| 91精品综合久久久久久久久久久| 精品亚洲欧美日韩| 日韩区一区二| 国产欧美日韩精品专区| 欧美办公室脚交xxxx| 欧美乱人伦中文字幕在线| 成人在线播放视频| 国产视频精品xxxx| 日韩永久免费视频| 日韩一区二区精品葵司在线| 中文字幕+乱码+中文| 精品免费在线视频| 久草资源在线视频| 亚洲女人的天堂| 又色又爽的视频| 久久精品视频免费| 国产又粗又猛又色| 国产成人精品www牛牛影视| 911福利视频| 日韩高清不卡在线| 免费无码av片在线观看| 最新日韩av| 18黄暴禁片在线观看| 一区二区三区在线| 爱爱爱视频网站| 91视频一区| 亚洲一区二区三区色| 欧美日韩精品一区二区视频| 清纯唯美一区二区三区| 免费成人结看片| 欧美婷婷久久| 精品国产1区| 三区精品视频观看| 欧美日韩精品在线一区| 亚洲一区三区在线观看| 精品久久久久久久| 亚洲人一区二区| 亚洲欧洲美洲一区二区三区| 影音先锋亚洲视频| 午夜精品久久| 日本a视频在线观看| 在线一区欧美| 韩国一区二区av| 日本午夜精品一区二区三区电影 | 天天操中文字幕| 狠狠做深爱婷婷久久综合一区| 国产成人精品777777| 欧美怡红院视频| 91亚洲国产成人精品一区| 欧美一区二区三区啪啪| 亚洲国产综合一区| 亚洲精品国产成人| 国产在线视频你懂得| 三级精品视频久久久久| 99福利在线| 国内精品视频一区| 欧美特大特白屁股xxxx| 国产精品久久久久久久久久99 | 欧美一区二区三区喷汁尤物| 亚洲国产精品久久久久久久| 日韩精品在线视频| av在线中文| 欧美老女人在线视频| 国产污视频在线播放| 国产精品久久久久久久9999| www一区二区三区| 国产在线欧美日韩| 国产精品免费大片| 人人妻人人澡人人爽精品欧美一区| 自拍偷拍欧美专区| 国产二区视频在线播放| 日本中文一区二区三区| 一级全黄裸体片| 久久久精品蜜桃| 美女的奶胸大爽爽大片| 午夜精品福利在线| 夜夜爽8888| 亚洲黄在线观看| 欧美一级二级三级区| 国内外成人免费激情在线视频网站 | 久久久在线观看| 国产成人精品亚洲日本在线观看| 91人成网站www| 自拍偷拍欧美一区| 妞干网这里只有精品| 亚洲综合另类| 男男受被啪到高潮自述| 国产亚洲短视频| 国产乡下妇女做爰毛片| 欧美日韩精品高清| 日韩精品一二| 久久久久这里只有精品| 精品69视频一区二区三区| 国产一区自拍视频| 香蕉国产精品| 亚洲天堂av线| 99精品黄色片免费大全| 强行糟蹋人妻hd中文| 欧美日韩免费不卡视频一区二区三区| 韩国av免费在线| 久久福利视频网| 草莓视频成人appios| 久久国产手机看片| 欧美精品国产| 一级在线免费视频| www激情久久| 1级黄色大片儿| 日韩区在线观看| 黄色动漫在线| 国产欧美一区二区三区久久| 深爱激情综合| 黄在线观看网站| 92精品国产成人观看免费 | jizzjizz在线观看| 欧美亚洲激情在线| 精品国内亚洲2022精品成人| 中文字幕超清在线免费观看| 秋霞影院一区二区| 一区二区三区四区免费| 天天av天天翘天天综合网| www.国产视频| 欧美另类在线观看| 久久一级大片| 黄色污污在线观看| 国产一区二区久久| 国产一区二区播放| 91精品国产一区二区人妖| 日本精品一区二区三区在线播放| 国产精品久久久久久久av大片| 国产成人ay| 人人爽人人av| 亚洲国产精品v| 中文字幕网址在线| 色婷婷综合成人av| 亚洲精品成人一区| 日韩不卡一二区| 国产91精品一区二区麻豆网站| 成人在线观看免费完整| 91精品国产免费久久综合| 菠萝菠萝蜜在线观看| 91久久极品少妇xxxxⅹ软件| 国产精品porn| 久久久久无码国产精品一区李宗瑞 | 韩日成人影院| 五月天久久综合网| 精品一区二区三区免费播放| 成年人二级毛片| 日韩精品在线一区| 51漫画成人app入口| 久久精品人成| 日韩av电影一区| 九九精品视频免费| 91麻豆精品国产自产在线观看一区 | 伦伦影院午夜日韩欧美限制| 秋霞一区二区| 男人用嘴添女人下身免费视频| 久久理论电影网| 在线观看中文字幕2021| 美女精品视频一区| 西野翔中文久久精品字幕| 无码无遮挡又大又爽又黄的视频| 中文无字幕一区二区三区| jizz中国少妇| 7777kkkk成人观看| 日韩伦理一区| 欧洲成人午夜精品无码区久久| 狠狠爱在线视频一区| 国产毛片在线| 91传媒在线免费观看| 亚洲免费影视| 神马午夜精品91| 日韩经典第一页| 四虎地址8848精品| 欧美视频在线免费播放| 国产日韩欧美麻豆| www.精品视频| 国产成人综合精品在线| 欧美黄色精品| 真实乱视频国产免费观看 | 亚洲色欧美另类| 成人精品视频99在线观看免费 | 日本激情一区二区三区| 国产精品欧美日韩久久| 伊人精品在线| 99热在线观看精品| 亚洲男人天堂2024| 亚洲国产一区二区三区网站| www.超碰com| 天天色图综合网|