欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > 為什么mysql自增主鍵不是連續的

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

熱門標簽:商家地圖標注圖片 怎么在高德地圖標注多個點 四川穩定外呼系統公司 福州外呼系統招商 AI智能云呼電話機器人怎么注冊 沈陽外呼系統有效果嗎 電話機器人接口是什么樣的 百度地圖標注信息怎么修改 溫州語音外呼系統排名

一 前言

       提出這個問題,是因為在工作中發現 mysql 中的 user 表的 id 默認是自增的,但是數據庫存儲的結果卻不是連續的。

       user 表結構:

CREATE TABLE `user` ( 
	`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '遞增id', 
	`name` varchar(20),
	`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間', 
	`update_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '更新時間', 
	PRIMARY KEY (`id`),UNIQUE KEY `idx_name` (`name`)) 
ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='user表'

       user 表存儲:

二 自增值存儲說明

1.1  MyISAM 引擎的自增值保存在數據文件中。

1.2  InnoDB 引擎的自增值,其實是保存在了內存里,并且到了 MySQL 8.0 版本后,才有了“自增值持久化”的能力,也就是才實現了“如果發生重啟,表的自增值可以恢復為 MySQL 重啟前的值”,具體情況是:

  • 在 MySQL 5.7 及之前的版本,自增值保存在內存里。每次重啟后,第一次打開表的時候,都會去找自增值的最大值 max(id),然后將 max(id) + 1 作為這個表當前的自增值。
  • 在 MySQL 8.0 版本,將自增值的變更記錄在了 redo log 中,重啟的時候依靠 redo log 恢復重啟之前的值。

三 自增值修改機制

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

  • 如果插入數據時 id 字段指定為 0、null 或未指定值,那么就把這個表當前的 AUTO_INCREMENT 值填到自增字段;
  • 如果插入數據時 id 字段指定了具體的值,就直接使用語句里指定的值。

     根據要插入的值和當前自增值的大小關系,自增值的變更結果也會有所不同。假設,某次要插入的值是 X,當前的自增值是 Y。

  • 如果 XY,那么這個表的自增值不變;
  • 如果 X≥Y,就需要把當前自增值修改為新的自增值。

     新的自增值生成算法是:從 auto_increment_offset 開始,以 auto_increment_increment 為步長,持續疊加,直到找到第一個大于 X 的值,作為新的自增值。其中,auto_increment_offset 和 auto_increment_increment 是兩個系統參數,分別用來表示自增的初始值和步長,默認值都是 1。

四 自增值修改時機

insert into user values(null, '張三'); 

  1 當執行上述 SQL 時,執行器調用 InnoDB 引擎接口寫入一行,傳入的這一行的值是 (0,"張三");

  2 InnoDB 發現 SQL 沒有指定自增 id 的值,獲取 user 表當前的自增值 2;

  3 將傳入的行的值改成 (2,"張三");

  4 將表的自增值改成 3;

  5 繼續執行插入數據操作。

五 導致自增值不連續的原因

5.1 唯一鍵沖突

       假設執行 SQL 的時候 user 表 id = 10,此時在內存中的自增 id 為11,此時發生唯一鍵沖突寫庫失敗,則 user 表沒有 id = 10 這條記錄,之后 id 從11開始寫入,因此 id 是不連續的。

5.2 事務回滾

       假設同時需要對 user、staff 表進行寫庫操作,執行 SQL 的時候 user 表 id = 10,此時在內存中的自增 id 為11;staff 表 id = 20,此時內存中的自增 id 為21,一旦事務執行失敗,事務回滾,寫庫失敗,則 user 表沒有 id = 10 這條記錄,staff 表沒有 id = 20 這條記錄,user 表從11開始寫入,staff 表從21開始寫入,如此產生 id 不連續的現象。

5.3 批量寫庫操作

       對于批量插入數據的語句,MySQL 有一個批量申請自增 id 的策略:

       1. 語句執行過程中,第一次申請自增 id,會分配 1 個;

       2. 1 個用完以后,這個語句第二次申請自增 id,會分配 2 個;

       3. 2 個用完以后,還是這個語句,第三次申請自增 id,會分配 4 個;

       依此類推,同一個語句去申請自增 id,每次申請到的自增 id 個數都是上一次的兩倍。

       假設批量往 user 表中寫入四條記錄,則這四條記錄將分為三次申請id,

       第一次分配到 id = 1,第二次分配到 id = 2、3 ,第三次分配到 id = 4、5、6、7,當批量寫入四條記錄之后,id = 1、2、3、4將會入庫,但是 id = 5、6、7就被廢棄了,下一個 id 從8開始。

六 參考文檔 

https://time.geekbang.org/column/intro/139 

到此這篇關于為什么mysql自增主鍵不是連續的 的文章就介紹到這了,更多相關mysql自增主鍵連續內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • MySQL中的主鍵以及設置其自增的用法教程
  • mysql修改自增長主鍵int類型為char類型示例
  • MySQL的自增ID(主鍵) 用完了的解決方法
  • 淺談MySQL中的自增主鍵用完了怎么辦
  • MySQL8新特性:自增主鍵的持久化詳解
  • mysql非主鍵自增長用法實例分析
  • Mysql自增主鍵id不是以此逐級遞增的處理
  • 詳解MySQL自增主鍵的實現

標簽:來賓 無錫 汕尾 邯鄲 七臺河 西寧 營口 寶雞

巨人網絡通訊聲明:本文標題《為什么mysql自增主鍵不是連續的》,本文關鍵詞  為什么,mysql,自增,主鍵,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《為什么mysql自增主鍵不是連續的》相關的同類信息!
  • 本頁收集關于為什么mysql自增主鍵不是連續的的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    波多野结衣中文字幕在线播放| 国产极品国产极品| 欧美精品视频www在线观看 | 亚洲第一会所有码转帖| 成人黄色软件下载| 亚洲人做受高潮| 国产欧美一区二区三区网站| 国产自产高清不卡| 怡红院一区二区三区| 欧美精品一区二区三区蜜桃视频 | 亚洲精品美腿丝袜| 成人av在线播放网站| 99视频只有精品| 中文字幕欧美一| av在线播放一区二区三区| 97在线观看免费高| 中文字幕不卡的av| 成人午夜在线视频| 日本乱人伦一区| 亚洲精品你懂的| 亚洲av午夜精品一区二区三区| 欧美网站大全在线观看| 一区二区三区在线观看欧美| 日本成人在线免费| 91精品国产综合久久久蜜臀图片| 午夜电影一区二区三区| 熟女人妻在线视频| 精品国产乱码久久久久久1区2区| 精品一区二区三区久久久| 日本欧美一区二区三区不卡视频| 久久久91精品国产一区二区三区| 国产精品亚洲午夜一区二区三区| 日本黄色免费片| 亚洲同性gay激情无套| 免费高清视频在线观看| 欧美一区日韩一区| 久久精品国产在热久久| 国产成人精品视频免费| 国产精品丝袜一区| 99精品欧美一区二区三区小说| 欧美三级视频在线播放| 视频一区二区三区中文字幕| 国产成人精品无码免费看夜聊软件| 久久嫩草精品久久久久| 成熟亚洲日本毛茸茸凸凹| 欧美视频自拍偷拍| 日韩高清不卡一区二区| 粉嫩精品久久99综合一区| 亚洲欧洲色图综合| 国产香蕉精品视频| 欧美精品一区二区在线观看| 成人性生交大合| 欧美日本免费一区二区三区| 久久国产精品色| 欧美三级在线免费观看| 偷拍一区二区三区| 亚洲午夜久久久久久久国产| 亚洲天堂久久久久久久| 亚洲男女在线观看| 中文字幕 久热精品 视频在线 | 99久久久免费精品国产一区二区| 欧美另类久久久品| 国产一区二区三区久久久 | 亚洲欧美电影一区二区| 成人在线视频免费播放| 欧美国产精品中文字幕| 91亚洲精华国产精华精华液| 日韩欧美国产一区二区在线播放| 国产成人精品一区二| 欧美理论在线播放| 国产精品一区二区在线观看不卡| 欧美三级日本三级少妇99| 精品一二三四在线| 欧美日韩综合一区| 国产麻豆成人精品| 欧美美女一区二区| 福利91精品一区二区三区| 欧美丰满美乳xxx高潮www| 国产91在线观看丝袜| 欧美一卡二卡在线观看| 成人黄色小视频在线观看| 欧美成人高清电影在线| 91麻豆精品在线观看| 久久久精品综合| 黄色片视频免费观看| 亚洲欧美一区二区不卡| 美国黄色特级片| 天天影视网天天综合色在线播放| 多男操一女视频| 裸体健美xxxx欧美裸体表演| 欧美日韩亚洲综合一区二区三区| 国产成人夜色高潮福利影视| 日韩午夜中文字幕| 91亚洲国产成人精品一区二区三| 国产亚洲美州欧州综合国| 偷偷色噜狠狠狠狠的777米奇| 中文字幕亚洲区| 日本一道本视频| 奇米精品一区二区三区在线观看 | 欧洲一区在线观看| 国产精品正在播放| 精品日本一线二线三线不卡| 丰满饥渴老女人hd| 中文字幕一区二区三| 少妇的滋味中文字幕bd| 男人的j进女人的j一区| 欧美日韩国产另类不卡| 91首页免费视频| 亚洲欧洲日韩一区二区三区| 国产小视频你懂的| 精品一区二区日韩| 精品乱人伦小说| 大地资源二中文在线影视观看 | 91精品国产色综合久久不卡蜜臀| 91免费看片在线观看| 中文字幕在线观看不卡| 日韩在线一卡二卡| 国产精品亚洲一区二区三区妖精| 2014亚洲片线观看视频免费| 少妇大叫太粗太大爽一区二区| 亚洲不卡一区二区三区| 欧美日韩一区二区三区在线看 | 99久久精品99国产精品| 国产精品久久看| 中国美女黄色一级片| 激情综合网最新| 久久青草欧美一区二区三区| 亚洲精品色午夜无码专区日韩| 琪琪久久久久日韩精品| 欧美成人一区二区| 亚洲成人黄色av| 黄一区二区三区| 久久久不卡影院| 亚洲色图日韩精品| 国产精品一级黄| 中文字幕av免费专区久久| 老司机成人免费视频| 成人免费高清视频在线观看| 国产精品久久一卡二卡| 亚洲av鲁丝一区二区三区 | 亚洲国产欧美日韩另类综合| 欧美日韩视频在线观看一区二区三区| 两女双腿交缠激烈磨豆腐 | 性色av无码久久一区二区三区| 国产98色在线|日韩| 中文字幕一区二区三区av | 国产乱码精品一区二区三区忘忧草 | 国产91精品久久久久久久网曝门| 国产欧美日韩精品一区| 日韩三级久久久| 99精品久久免费看蜜臀剧情介绍| 亚洲女同一区二区| 欧美日韩精品免费观看视频| 7788色淫网站小说| 开心九九激情九九欧美日韩精美视频电影 | 操她视频在线观看| 成人av电影在线观看| 一区二区三区欧美亚洲| 777亚洲妇女| 国产免费一区二区三区网站免费| 国产一区高清在线| 中文字幕一区二区三区色视频| 欧美亚洲综合网| xxxx黄色片| 国模娜娜一区二区三区| 中文字幕永久在线不卡| 欧美伊人久久久久久午夜久久久久| 亚洲av成人片无码| 极品尤物av久久免费看| 最新久久zyz资源站| 在线不卡一区二区| 天天操天天干天天操天天干| 99久久99精品久久久久久| 婷婷亚洲久悠悠色悠在线播放| 久久香蕉国产线看观看99| 色综合网站在线| 呦呦视频在线观看| 国产精品一区二区免费不卡| 亚洲美女电影在线| 欧美一区二区免费观在线| 国产又黄又粗又猛又爽的| 91麻豆蜜桃一区二区三区| 另类的小说在线视频另类成人小视频在线| 久久精品视频免费观看| 欧美视频三区在线播放| 国产精久久一区二区三区| 99久久精品免费观看| 丝袜诱惑亚洲看片| 国产精品视频一二三区| 欧美日韩国产美| 天天爽天天爽天天爽| 欧美激情 亚洲| 国产精品一区二区在线观看不卡| 亚洲自拍与偷拍| 久久久国产一区二区三区四区小说| 欧美视频中文一区二区三区在线观看| 亚洲精品一区二区三区影院忠贞| 91丨porny丨中文| 国产麻豆午夜三级精品| 天天做天天摸天天爽国产一区|