亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > 關于Mysql自增id的這些你可能還不知道

關于Mysql自增id的這些你可能還不知道

熱門標簽:福建外呼電銷機器人加盟 中國地圖標注公司 徐涇鎮騰訊地圖標注 400電話申請廠家現貨 天津公司外呼系統軟件 百度地圖標注要什么軟件 昌德訊外呼系統 自己做地圖標注需要些什么 電話機器人的價格多少錢一個月

導讀:

在使用MySQL建表時,我們通常會創建一個自增字段(AUTO_INCREMENT),并以此字段作為主鍵。本篇文章將以問答的形式講述關于自增id的一切。

注: 本文所講的都是基于Innodb存儲引擎。

下面話不多說了,來一起隨著小編看看詳細的介紹吧

1.MySQL為什么建議將自增列id設為主鍵?

  • 如果我們定義了主鍵(PRIMARY KEY),那么InnoDB會選擇主鍵作為聚集索引、如果沒有顯式定義主鍵,則InnoDB會選擇第一個不包含有NULL值的唯一索引作為主鍵索引、如果也沒有這樣的唯一索引,則InnoDB會選擇內置6字節長的ROWID作為隱含的聚集索引(ROWID隨著行記錄的寫入而主鍵遞增,這個ROWID不像ORACLE的ROWID那樣可引用,是隱含的)。
  • 數據記錄本身被存于主索引(一顆B+Tree)的葉子節點上。這就要求同一個葉子節點內(大小為一個內存頁或磁盤頁)的各條數據記錄按主鍵順序存放,因此每當有一條新的記錄插入時,MySQL會根據其主鍵將其插入適當的節點和位置,如果頁面達到裝載因子(InnoDB默認為15/16),則開辟一個新的頁(節點)
  • 如果表使用自增主鍵,那么每次插入新的記錄,記錄就會順序添加到當前索引節點的后續位置,當一頁寫滿,就會自動開辟一個新的頁
  • 如果使用非自增主鍵(如果身份證號或學號等),由于每次插入主鍵的值近似于隨機,因此每次新紀錄都要被插到現有索引頁得中間某個位置,此時MySQL不得不為了將新記錄插到合適位置而移動數據,甚至目標頁面可能已經被回寫到磁盤上而從緩存中清掉,此時又要從磁盤上讀回來,這增加了很多開銷,同時頻繁的移動、分頁操作造成了大量的碎片,得到了不夠緊湊的索引結構,后續不得不通過OPTIMIZE TABLE來重建表并優化填充頁面。

綜上而言:當我們使用自增列作為主鍵時,存取效率是最高的。

2.自增列id一定是連續的嗎?

自增id是增長的 不一定連續。

我們先來看下MySQL 對自增值的保存策略:

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 恢復重啟之前的值。

造成自增id不連續的情況可能有:

1.唯一鍵沖突

2.事務回滾

3.insert ... select語句批量申請自增id

3.自增id有上限嗎?

自增id是整型字段,我們常用int類型來定義增長id,而int類型有上限 即增長id也是有上限的。
下表列舉下 int 與 bigint 字段類型的范圍:

類型 大小 范圍(有符號) 范圍(無符號)
int 4字節 (-2147483648,2147483647) (0,4294967295)
bigint 8字節 (-9223372036854775808,9223372036854775807) (0,18446744073709551615)

從上表可以看出:當自增字段使用int有符號類型時,最大可達2147483647即21億多;使用int無符號類型時,最大可達4294967295即42億多。當然bigint能表示的范圍更大。

下面我們測試下當自增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 NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4294967295;
*/

insert into t values(null);
//Duplicate entry '4294967295' for key 'PRIMARY'

從實驗可以看出,當自增id達到最大時將無法擴展,第一個 insert 語句插入數據成功后,這個表的AUTO_INCREMENT 沒有改變(還是 4294967295),就導致了第二個 insert 語句又拿到相同的自增 id 值,再試圖執行插入語句,報主鍵沖突錯誤。

4.關于自增列 我們該怎么維護?

維護方面主要提供以下2點建議:

1.字段類型選擇方面:推薦使用int無符號類型,若可預測該表數據量將非常大 可改用bigint無符號類型。

2.多關注大表的自增值,防止發生主鍵溢出情況。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。

您可能感興趣的文章:
  • MySQL的自增ID(主鍵) 用完了的解決方法
  • 關于mysql自增id,你需要知道的
  • MySQL表自增id溢出的故障復盤解決
  • 關于MySQL自增ID的一些小問題總結
  • mysql自增id超大問題的排查與解決
  • MySQL分表自增ID問題的解決方法
  • 線上MySQL的自增id用盡怎么辦

標簽:駐馬店 陜西 荊門 昌都 梅河口 北京 黔西 鄂爾多斯

巨人網絡通訊聲明:本文標題《關于Mysql自增id的這些你可能還不知道》,本文關鍵詞  關于,Mysql,自增,的,這些,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《關于Mysql自增id的這些你可能還不知道》相關的同類信息!
  • 本頁收集關于關于Mysql自增id的這些你可能還不知道的相關信息資訊供網民參考!
  • 推薦文章
    国产不卡高清在线观看视频| 国产极品精频在线观看| 黄色免费三级| 日韩一级精品视频在线观看| 亚洲女人国产香蕉久久精品 | 国产麻豆精品| 中文字幕一区二区三区精彩视频| 欧美1区| 黄视频网站免费看| 国产不卡在线看| 欧美激情伊人| 91麻豆精品国产片在线观看| 亚欧成人毛片一区二区三区四区| 99久久网站| 欧美激情在线精品video| 韩国毛片 免费| 成人高清视频免费观看| 黄色免费三级| 毛片电影网| 国产成人精品综合在线| 国产视频一区二区三区四区| 亚洲第一页乱| 精品国产亚洲人成在线| 九九久久国产精品大片| 麻豆网站在线免费观看| 久久99这里只有精品国产| 精品毛片视频| 91麻豆爱豆果冻天美星空| 国产国产人免费视频成69堂| 成人a大片高清在线观看| 沈樵在线观看福利| 日本在线www| 久久99欧美| 欧美激情一区二区三区视频高清| 精品视频在线看| 亚洲第一色在线| 色综合久久天天综合| 日本特黄特色aaa大片免费| 欧美a免费| 国产成人精品在线| 你懂的在线观看视频| 中文字幕一区二区三区 精品| 可以免费在线看黄的网站| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 久久久久久久网| 韩国三级香港三级日本三级| 亚欧视频在线| 国产不卡在线观看视频| 免费国产一级特黄aa大片在线| 国产成人啪精品视频免费软件| 国产国语对白一级毛片| 99久久网站| 成人高清免费| 99色视频在线| 日韩免费在线视频| 精品久久久久久影院免费| 精品视频一区二区三区| 亚欧成人乱码一区二区| 精品视频免费在线| 色综合久久久久综合体桃花网| 日韩男人天堂| 成人免费观看视频| 久久精品免视看国产成人2021| 日韩中文字幕在线观看视频| 国产麻豆精品高清在线播放| 精品国产香蕉伊思人在线又爽又黄| 精品视频在线观看免费| 日本特黄特黄aaaaa大片| 欧美大片毛片aaa免费看| 999久久久免费精品国产牛牛| 一级毛片视频在线观看| 国产伦久视频免费观看 视频 | 九九精品在线| 欧美日本免费| 日韩av成人| 中文字幕97| 精品国产一区二区三区久 | 日韩免费片| 国产美女在线一区二区三区| 国产一区精品| 欧美激情一区二区三区在线| 免费毛片播放| 精品国产一区二区三区精东影业| 尤物视频网站在线观看| 日日日夜夜操| 一级毛片视频免费| 亚洲天堂免费| 久草免费在线视频| 国产精品免费久久| 国产极品精频在线观看| 国产一区国产二区国产三区| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 欧美大片aaaa一级毛片| 亚洲精品影院| 国产国产人免费视频成69堂| 日韩avdvd| 人人干人人草| 国产一区二区精品尤物| 欧美电影免费看大全| 国产高清视频免费| 欧美日本免费| 欧美大片毛片aaa免费看| 麻豆系列 在线视频| 亚欧乱色一区二区三区| 日韩中文字幕一区| 成人a大片在线观看| 国产网站免费视频| 久久精品免视看国产成人2021| 成人影视在线播放| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产一区二区精品| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 高清一级毛片一本到免费观看| 欧美日本韩国| 欧美一区二区三区性| 成人免费网站久久久| 香蕉视频一级| 美女免费精品高清毛片在线视| 可以免费在线看黄的网站| 九九九在线视频| 午夜在线亚洲| 精品国产三级a| 国产一区二区精品| 99热热久久| 久久精品免视看国产成人2021| 免费一级片在线观看| 国产成人啪精品视频免费软件| 99久久精品国产麻豆| 久久99这里只有精品国产| 国产91精品系列在线观看| 九九精品在线| 四虎影视库| 欧美爱爱动态| 成人影视在线播放| 国产成人啪精品| 99久久精品国产高清一区二区| 在线观看导航| a级黄色毛片免费播放视频| 成人在激情在线视频| 日本在线不卡视频| 九九干| 国产亚洲精品aaa大片| 美女免费毛片| 深夜做爰性大片中文| 亚洲www美色| 国产伦精品一区三区视频| 深夜做爰性大片中文| 九九九在线视频| 国产视频一区二区在线播放| 国产美女在线观看| 美女被草网站| 亚洲第一视频在线播放| 麻豆网站在线免费观看| 韩国三级香港三级日本三级| 四虎影视久久| 天天做人人爱夜夜爽2020| 91麻豆精品国产综合久久久| 国产福利免费视频| 久久精品大片| 成人高清视频免费观看| 中文字幕一区二区三区精彩视频| 国产一级生活片| 高清一级做a爱过程不卡视频| 亚洲精品中文一区不卡| 成人高清免费| 超级乱淫伦动漫| 日韩专区在线播放| 国产福利免费视频| 成人影视在线播放| 日韩免费在线视频| 国产精品自拍在线| 欧美a级成人淫片免费看| 九九干| 午夜家庭影院| 亚洲第一色在线| 午夜在线亚洲| 国产91丝袜在线播放0| 在线观看导航| 久久精品免视看国产明星| 国产麻豆精品| 一级女性全黄生活片免费| 999久久66久6只有精品| 青青青草影院| 沈樵在线观看福利| 二级片在线观看| 高清一级做a爱过程不卡视频| 日韩中文字幕一区| 成人免费观看的视频黄页| 国产不卡在线看| 久久国产精品只做精品| 久久国产影视免费精品| 午夜在线影院| 青青青草视频在线观看| 日日日夜夜操| 中文字幕一区二区三区 精品| 97视频免费在线| 你懂的日韩| 欧美大片一区| 国产不卡高清在线观看视频| 精品国产亚洲人成在线|