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

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

淺談MySQL中的自增主鍵用完了怎么辦

瀏覽:247日期:2023-10-09 11:21:46

在面試中,大家應(yīng)該經(jīng)歷過如下場(chǎng)景

面試官:'用過mysql吧,你們是用自增主鍵還是UUID?'

你:'用的是自增主鍵'

面試官:'為什么是自增主鍵?'

你:'因?yàn)椴捎米栽鲋麈I,數(shù)據(jù)在物理結(jié)構(gòu)上是順序存儲(chǔ),性能最好,blabla…'

面試官:'那自增主鍵達(dá)到最大值了,用完了怎么辦?'

你:'what,沒復(fù)習(xí)啊!!' (然后,你就可以回去等通知了!)

這個(gè)問題是一個(gè)粉絲給我提的,我覺得挺有意(KENG)思(B)!于是,今天我們就來談一談,這個(gè)自增主鍵用完了該怎么辦!

正文

簡(jiǎn)單版

我們先明白一點(diǎn),在mysql中,Int整型的范圍如下

淺談MySQL中的自增主鍵用完了怎么辦

我們以無符號(hào)整型為例,存儲(chǔ)范圍為0~4294967295,約43億!我們先說一下,一旦自增id達(dá)到最大值,此時(shí)數(shù)據(jù)繼續(xù)插入是會(huì)報(bào)一個(gè)主鍵沖突異常如下所示

//Duplicate entry ’4294967295’ for key ’PRIMARY’

那解決方法也是很簡(jiǎn)單的,將Int類型改為BigInt類型,BigInt的范圍如下

淺談MySQL中的自增主鍵用完了怎么辦

就算你每秒10000條數(shù)據(jù),跑100年,單表的數(shù)據(jù)也才10000*24*3600*365*100=31536000000000這數(shù)字距離BigInt的上限還差的遠(yuǎn),因此你將自增ID設(shè)為BigInt類型,你是不用考慮自增ID達(dá)到最大值這個(gè)問題!然而,如果你在面試中的回答如果是

你:'簡(jiǎn)單啊,把自增主鍵的類型改為BigInt類型就好了!'

接下來,面試官可以問你一個(gè)更坑的問題!

面試官:'你在線上怎么修改列的數(shù)據(jù)類型的?'

你:'what!我還是回等通知吧!'

怎么改

目前業(yè)內(nèi)在線修改表結(jié)構(gòu)的方案,據(jù)我了解,一般有如下三種

方式一:使用mysql5.6+提供的在線修改功能

所謂的mysql自己提供的功能也就是mysql自己原生的語句,例如我們要修改原字段名稱及類型。

mysql> ALTER TABLE table_name CHANGE old_field_name new_field_name field_type;

那么,在mysql5.5這個(gè)版本之前,這是通過臨時(shí)表拷貝的方式實(shí)現(xiàn)的。執(zhí)行ALTER語句后,會(huì)新建一個(gè)帶有新結(jié)構(gòu)的臨時(shí)表,將原表數(shù)據(jù)全部拷貝到臨時(shí)表,然后Rename,完成創(chuàng)建操作。這個(gè)方式過程中,原表是可讀的,不可寫。在5.6+開始,mysql支持在線修改數(shù)據(jù)庫(kù)表,在修改表的過程中,對(duì)絕大部分操作,原表可讀,也可以寫。那么,對(duì)于修改列的數(shù)據(jù)類型這種操作,原表還能寫么?來來來,特意去官網(wǎng)找了mysql8.0版本的一張圖

淺談MySQL中的自增主鍵用完了怎么辦

如圖所示,對(duì)于修改數(shù)據(jù)類型這種操作,是不支持并發(fā)的DML操作!也就是說,如果你直接使用ALTER這樣的語句在線修改表數(shù)據(jù)結(jié)構(gòu),會(huì)導(dǎo)致這張表無法進(jìn)行更新類操作(DELETE、UPDATE、DELETE)。因此,直接ALTER是不行滴!

那我們只能用方式二或者方式三

方式二:借助第三方工具

業(yè)內(nèi)有一些第三方工具可以支持在線修改表結(jié)構(gòu),使用這些第三發(fā)工具,能夠讓你在執(zhí)行ALTER操作的時(shí)候,表不會(huì)阻塞!比較出名的有兩個(gè)

pt-online-schema-change,簡(jiǎn)稱pt-osc GitHub正式宣布以開源的方式發(fā)布的工具,名為gh-ost

以pt-osc為例,它的原理如下

1、創(chuàng)建一個(gè)新的表,表結(jié)構(gòu)為修改后的數(shù)據(jù)表,用于從源數(shù)據(jù)表向新表中導(dǎo)入數(shù)據(jù)。

2、創(chuàng)建觸發(fā)器,用于記錄從拷貝數(shù)據(jù)開始之后,對(duì)源數(shù)據(jù)表繼續(xù)進(jìn)行數(shù)據(jù)修改的操作記錄下來,用于數(shù)據(jù)拷貝結(jié)束后,執(zhí)行這些操作,保證數(shù)據(jù)不會(huì)丟失。

3、拷貝數(shù)據(jù),從源數(shù)據(jù)表中拷貝數(shù)據(jù)到新表中。

4、rename源數(shù)據(jù)表為old表,把新表rename為源表名,并將old表刪除。

5、刪除觸發(fā)器。

然而這兩個(gè)有意(KENG)思(B)的工具,居然。。。居然。。。唉!如果你的表里有觸發(fā)器和外鍵,這兩個(gè)工具是不行滴!如果真碰上了數(shù)據(jù)庫(kù)里有觸發(fā)器和外鍵,只能硬杠了,請(qǐng)看方式三方式三:改從庫(kù)表結(jié)構(gòu),然后主從切換此法極其麻煩,需要專業(yè)水平的選手進(jìn)行操作。因?yàn)槲覀兊膍ysql架構(gòu)一般是讀寫分離架構(gòu),從機(jī)是用來讀的。我們直接在從庫(kù)上進(jìn)行表結(jié)構(gòu)修改,不會(huì)阻塞從庫(kù)的讀操作。改完之后,進(jìn)行主從切換即可。唯一需要注意的是,主從切換過程中可能會(huì)有數(shù)據(jù)丟失的情況!

高深版

其實(shí)答完上面的問題后,這篇文章差不多完了。但是,還記得我在開頭說的么。這是一個(gè)很有意(KENG)思(B)的問題,為什么呢?假設(shè)啊,你的表里的自增字段為有符號(hào)的Int類型的,也就是說,你的字段范圍為-2147483648到2147483648。一切又那么剛好,你的自增ID是從0開始的,也就是說,現(xiàn)在你的可以用的范圍為0~2147483648。我們明確一點(diǎn),表中真實(shí)的數(shù)據(jù)ID,肯定會(huì)出現(xiàn)一些意外,ID不一定是連續(xù)的。例如,有如下情形的出現(xiàn)

CREATE TABLE `t` ( `id` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`),) EN

執(zhí)行下列SQL

insert into t values(null);// 插入的行是 (1)begin;insert into t values(null);rolllack;insert into t values(null);// 插入的行是 (3)

因此,表中的真實(shí)id必然會(huì)出現(xiàn)斷續(xù)的情況。好,那這會(huì)你的自增主鍵id的數(shù)據(jù)范圍為0~2147483648,也就是單表21億條數(shù)據(jù)!考慮id會(huì)出現(xiàn)斷續(xù),真實(shí)數(shù)據(jù)頂多18億條吧。老哥,都單表18億條了,還不分庫(kù)分表?你一旦分庫(kù)分表了,就不能依賴于每個(gè)表的自增ID來全局唯一標(biāo)識(shí)這些數(shù)據(jù)了。此時(shí),我們就需要提供一 個(gè)全局唯一的ID號(hào)生成策略來支持分庫(kù)分表的環(huán)境。

因此在實(shí)際中,你根本等不到自增主鍵用完到情形!因此,專業(yè)版回答如下:

面試官:'那自增主鍵達(dá)到最大值了,用完了怎么辦?'

你:'這問題沒遇到過,因?yàn)樽栽鲋麈I我們用int類型,一般達(dá)不到最大值,我們就分庫(kù)分表了,所以不曾遇見過!'

到此這篇關(guān)于淺談MySQL中的自增主鍵用完了怎么辦的文章就介紹到這了,更多相關(guān)MySQL 自增主鍵用完內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: MySQL 數(shù)據(jù)庫(kù)
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
99pao成人国产永久免费视频| 亚洲欧美专区| 日韩1区2区3区| 久久成人国产| 久久国产精品久久久久久电车| 久久国产亚洲精品| 福利一区二区免费视频| 欧美激情99| 精品一区二区三区中文字幕在线| 国产精品黄色片| 欧美aa在线视频| 麻豆91小视频| 精品久久网站| 香蕉成人av| 国产91在线播放精品| 国产精品原创| 欧美丝袜一区| 蜜桃91丨九色丨蝌蚪91桃色| 综合国产在线| 国产精品一区二区三区美女| 精品一区av| 色天使综合视频| 欧美一区二区性| 最新亚洲国产| 国产极品嫩模在线观看91精品| 美女性感视频久久| 视频小说一区二区| 蜜芽一区二区三区| 国产情侣一区在线| 精品视频黄色| 国产视频一区在线观看一区免费| 亚洲tv在线| 国产福利电影在线播放| 国产精品女主播一区二区三区| 日韩精选在线| 亚洲精品一区三区三区在线观看| 在线亚洲精品| 麻豆成人av在线| 亚洲免费激情| 国产成人a视频高清在线观看| 国产精品三上| а√天堂中文在线资源8| 免费看黄色91| 日本少妇一区| 日韩精品中文字幕一区二区| 国产传媒在线观看| 国产欧美欧美| 亚洲有吗中文字幕| 国产在线|日韩| 久久91视频| 日本aⅴ免费视频一区二区三区| 婷婷成人在线| 另类综合日韩欧美亚洲| 日韩激情精品| 一本色道久久精品| 国产成人黄色| 久久av网址| 亚洲精品三级| 蜜臀久久久99精品久久久久久| 精品视频91| 国产精品久久久网站| 免费成人av在线播放| 欧美va天堂在线| 久久精品成人| 日韩精品午夜| 国产精品久久久久久久久妇女| 国产午夜一区| 91亚洲无吗| 日本亚洲欧美天堂免费| 在线国产一区| 日韩亚洲在线| 中文字幕一区二区三区四区久久| 亚洲黄页一区| 日韩精品一二三区| 婷婷激情图片久久| av亚洲免费| 性欧美精品高清| 综合亚洲自拍| 91精品啪在线观看国产爱臀| 日韩三级久久| 日韩av网站在线观看| 7777精品| 久久亚洲道色| 日韩精品中文字幕第1页| 高清av一区二区三区| 国产精品av一区二区| 精品1区2区3区4区| 亚洲日本免费电影| 国产日韩三级| 精品一区二区三区中文字幕视频 | 日韩精品电影一区亚洲| 久久精品99国产国产精| 久久中文字幕一区二区三区| 精品日韩一区| 五月天激情综合网| 欧美亚洲专区| 国产不卡一区| 国产精品美女久久久| 欧美日韩一区自拍| 麻豆精品蜜桃| 亚洲免费资源| 日本欧美国产| 日韩中文字幕| 国产福利电影在线播放| 亚洲一区二区日韩| 欧美好骚综合网| 亚洲精品无播放器在线播放| 成人欧美一区二区三区的电影| 日韩影院在线观看| 亚洲性色av| 国产伦精品一区二区三区千人斩| 国产一区二区中文| 乱一区二区av| 国产日韩中文在线中文字幕 | 午夜精品一区二区三区国产| 91精品国产经典在线观看| 香蕉久久99| 久久久久免费| 国产情侣一区在线| 麻豆成人在线| 欧美二三四区| 国产一区二区三区四区| 亚洲v天堂v手机在线| 国产视频一区三区| 久久国产直播| а√天堂中文在线资源8| 国产美女久久| 日本色综合中文字幕| 一区在线免费| 亚洲精品永久免费视频| 国产精品porn| 日韩高清在线一区| 亚洲另类黄色| 亚洲一区二区免费在线观看| 欧美 日韩 国产一区二区在线视频 | 日韩av有码| 国产福利一区二区精品秒拍| 亚洲精品亚洲人成在线观看| 亚洲免费资源| 91精品国产自产精品男人的天堂 | 91av一区| 国产精品网在线观看| 久久wwww| 精品亚洲精品| 欧美日韩尤物久久| 欧美~级网站不卡| 国产视频久久| 国产亚洲一卡2卡3卡4卡新区| 午夜视频一区二区在线观看| 亚洲欧美日韩在线观看a三区| 日韩中文欧美在线| 蜜臀精品久久久久久蜜臀| 亚洲精品免费观看| 国产精品黄色| 国产不卡一区| 欧美 日韩 国产精品免费观看| 免费国产自久久久久三四区久久| 国产精品av一区二区| 亚洲在线国产日韩欧美| 亚洲最大av| 国产精品欧美在线观看| 久久亚州av| 精品中文字幕一区二区三区av| 五月天激情综合网| 久久都是精品| 国产精品99久久久久久董美香| 狠狠躁少妇一区二区三区| 99精品视频在线| 亚洲精品进入| 国产伦精品一区二区三区千人斩| av资源中文在线天堂| 噜噜噜躁狠狠躁狠狠精品视频| 久久精品99国产精品| 久久久精品久久久久久96 | 亚洲精品乱码久久久久久蜜桃麻豆 | 伊人久久国产| 亚洲免费毛片| 黑森林国产精品av| 亚洲精品欧洲| 成人片免费看| 欧美在线不卡| 91成人精品| 精品欧美日韩精品| 一区二区91| 三级在线看中文字幕完整版| 日本va欧美va精品发布| 午夜久久tv| 色一区二区三区| 国产探花在线精品| 欧美午夜精品一区二区三区电影| 91精品国产自产精品男人的天堂| 蜜桃成人精品| 国产精品1区在线| 伊人www22综合色| 欧美日韩一二| 涩涩av在线| 精品国产美女a久久9999| 亚洲九九精品| 亚洲深夜影院| 九九在线精品|