日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

關(guān)于mysql自增id,你需要知道的

瀏覽:32日期:2023-10-13 11:45:11

導(dǎo)讀:在使用MySQL建表時,我們通常會創(chuàng)建一個自增字段(AUTO_INCREMENT),并以此字段作為主鍵。本篇文章將以問答的形式講述關(guān)于自增id的一切。

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

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

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

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

2.自增列id一定是連續(xù)的嗎?

自增id是增長的 不一定連續(xù)。

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

InnoDB 引擎的自增值,其實是保存在了內(nèi)存里,并且到了 MySQL 8.0 版本后,才有了“自增值持久化”的能力,也就是才實現(xiàn)了“如果發(fā)生重啟,表的自增值可以恢復(fù)為 MySQL 重啟前的值”,具體情況是:在 MySQL 5.7 及之前的版本,自增值保存在內(nèi)存里,并沒有持久化。每次重啟后,第一次打開表的時候,都會去找自增值的最大值 max(id),然后將 max(id)+1 作為這個表當(dāng)前的自增值。舉例來說,如果一個表當(dāng)前數(shù)據(jù)行里最大的 id 是 10,AUTO_INCREMENT=11。這時候,我們刪除 id=10 的行,AUTO_INCREMENT 還是 11。但如果馬上重啟實例,重啟后這個表的 AUTO_INCREMENT 就會變成 10。也就是說,MySQL 重啟可能會修改一個表的 AUTO_INCREMENT 的值。在 MySQL 8.0 版本,將自增值的變更記錄在了 redo log 中,重啟的時候依靠 redo log 恢復(fù)重啟之前的值。

造成自增id不連續(xù)的情況可能有:

1.唯一鍵沖突 2.事務(wù)回滾 3.insert ... select語句批量申請自增id

3.自增id有上限嗎?

自增id是整型字段,我們常用int類型來定義增長id,而int類型有上限 即增長id也是有上限的。

下表列舉下 int 與 bigint 字段類型的范圍:

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

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

下面我們測試下當(dāng)自增id達(dá)到最大時再次插入數(shù)據(jù)會怎么樣:

create table t(id int unsigned auto_increment primary key) auto_increment=4294967295;insert into t values(null);// 成功插入一行 4294967295show 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’

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

4.關(guān)于自增列 我們該怎么維護(hù)?

維護(hù)方面主要提供以下2點建議:

1.字段類型選擇方面:推薦使用int無符號類型,若可預(yù)測該表數(shù)據(jù)量將非常大 可改用bigint無符號類型。 2.多關(guān)注大表的自增值,防止發(fā)生主鍵溢出情況。

以上就是關(guān)于mysql自增id,你需要知道的的詳細(xì)內(nèi)容,更多關(guān)于mysql自增id的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: MySQL 數(shù)據(jù)庫
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲最新av| 亚洲无线观看| 国产成人精品三级高清久久91| 国产粉嫩在线观看| 开心激情综合| 秋霞影视一区二区三区| 久久亚洲欧美| 国产麻豆精品| 国产一区观看| 国产精品亚洲产品| 亚洲主播在线| 91偷拍一区二区三区精品| 在线 亚洲欧美在线综合一区| **爰片久久毛片| 久久精品不卡| 欧美极品一区二区三区| 国产免费成人| 免费视频一区三区| 伊人久久成人| 国产伦理久久久久久妇女| 国产二区精品| 国产91在线播放精品| 日韩精品三级| 妖精视频成人观看www| 久久精品资源| 成人在线黄色| 亚洲一区二区三区免费在线观看| 91亚洲精品视频在线观看| 国产一区二区精品福利地址| 欧美日韩精品一本二本三本| 欧美日韩一区二区国产| 久久久久久美女精品| 国产欧美自拍| 伊人久久婷婷| 亚洲三级视频| 久久中文字幕导航| 亚洲夜间福利| 日本欧美一区二区在线观看| 精品国产一区二区三区2021| 99riav1国产精品视频| 久久99久久人婷婷精品综合| 亚洲激精日韩激精欧美精品| 老司机精品视频网| 日本 国产 欧美色综合| av最新在线| 午夜久久av| 久久美女精品| 欧美国产日本| 蜜臀久久久99精品久久久久久| 欧美精品影院| 欧美sss在线视频| 国产日韩欧美一区| 在线视频精品| 天堂av在线| 国产欧美激情| 亚洲我射av| 1024精品一区二区三区| 精品国产乱码久久久久久樱花 | 欧美 日韩 国产一区二区在线视频 | 亚洲精品一级二级| 日韩高清国产一区在线| 伊人成人网在线看| 免费在线小视频| 久久中文字幕一区二区| 日本v片在线高清不卡在线观看| 91久久久精品国产| 中文在线а√天堂| 久久不见久久见免费视频7| 在线国产精品一区| 不卡一区2区| 成人在线网站| 91亚洲成人| 荡女精品导航| 国产精品久久久久久av公交车| 夜夜嗨网站十八久久| 久久精品影视| av高清一区| 高清一区二区三区| 久久一区欧美| 美女性感视频久久| 麻豆精品av| 久久一区国产| 麻豆极品一区二区三区| 国产精品chinese| 国产精品天堂蜜av在线播放| 日本不卡视频一二三区| 中文字幕av亚洲精品一部二部| 久久香蕉精品| 亚洲区第一页| 日韩视频一区| 在线午夜精品| 中国女人久久久| 欧美另类综合| 欧美日韩国产探花| 国产精品三上| 伊人久久大香伊蕉在人线观看热v| 性一交一乱一区二区洋洋av| 美女网站久久| 婷婷综合国产| 欧美亚洲人成在线| 国产伦精品一区二区三区千人斩| 日本不卡视频在线| 欧美久久精品| 另类综合日韩欧美亚洲| 亚洲精品在线a| 日本少妇精品亚洲第一区| 亚洲毛片网站| 欧美日本一区| 你懂的国产精品永久在线| 美女精品久久| 国产精品久久久久久久久久白浆| 欧美日韩一区二区三区不卡视频 | 蜜桃精品视频| 精品一级视频| 久久久久久婷| 日韩不卡手机在线v区| 国产人成精品一区二区三| 国产精品jk白丝蜜臀av小说| 国内揄拍国内精品久久| 欧美不卡高清一区二区三区| 午夜在线精品偷拍| 一区二区国产在线| 日韩精品成人| 久久精品午夜| 91精品国产自产在线观看永久∴ | 欧美特黄一区| 亚洲91在线| 男人的天堂亚洲一区| 国产欧美日韩一区二区三区四区| 动漫av一区| 影院欧美亚洲| 国产图片一区| 久久九九精品| 天堂va在线高清一区| 精品久久影院| 国产女优一区| 久久一区欧美| 欧美在线亚洲综合一区| 日韩不卡在线观看日韩不卡视频| 黄色欧美在线| 亚洲激情不卡| 欧美激情麻豆| 国产66精品| 蜜臀久久99精品久久久久宅男| 国产精品白丝av嫩草影院| 欧美va天堂| 国产探花在线精品| 久久国产亚洲| 久久国产精品免费一区二区三区 | 一区二区国产精品| 国产自产自拍视频在线观看| 不卡一区综合视频| 国产精品极品| 亚洲一区免费| 国产日产精品一区二区三区四区的观看方式 | 久久久蜜桃一区二区人| 日韩精品久久理论片| 日韩成人高清| 国产丝袜一区| 亚洲一区二区毛片| a国产在线视频| 久久狠狠久久| 香蕉成人久久| www.51av欧美视频| 日韩一区网站| 亚洲四虎影院| 国产精品magnet| 久久久五月天| 欧美精品二区| 亚洲精品无播放器在线播放| 日韩精品诱惑一区?区三区| 97se亚洲| 亚洲免费中文| 亚洲电影在线| av在线资源| 你懂的国产精品| 日韩在线视频一区二区三区| 精品91久久久久| 亚洲黄色网址| 久久婷婷国产| 国产亚洲精aa在线看| 亚洲综合小说| 九色porny丨国产首页在线| 免费在线观看一区| 91午夜精品| 日本亚洲欧美天堂免费| 免费人成精品欧美精品| 影院欧美亚洲| 欧美va亚洲va日韩∨a综合色| 日本不良网站在线观看| 国产精品极品国产中出| 日韩黄色在线观看| 免费在线观看不卡| 亚洲欧美日本国产专区一区| 日韩另类视频| 97视频热人人精品免费| 精品一区二区三区中文字幕在线| 日精品一区二区三区| 免费在线观看一区二区三区| 免费精品视频|