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

您的位置:首頁技術文章
文章詳情頁

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

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

在面試中,大家應該經歷過如下場景

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

你:'用的是自增主鍵'

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

你:'因為采用自增主鍵,數據在物理結構上是順序存儲,性能最好,blabla…'

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

你:'what,沒復習?。?!' (然后,你就可以回去等通知了!)

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

正文

簡單版

我們先明白一點,在mysql中,Int整型的范圍如下

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

我們以無符號整型為例,存儲范圍為0~4294967295,約43億!我們先說一下,一旦自增id達到最大值,此時數據繼續插入是會報一個主鍵沖突異常如下所示

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

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

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

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

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

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

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

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

怎么改

目前業內在線修改表結構的方案,據我了解,一般有如下三種

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

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

mysql> ALTER TABLE table_name CHANGE old_field_name new_field_name field_type;

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

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

如圖所示,對于修改數據類型這種操作,是不支持并發的DML操作!也就是說,如果你直接使用ALTER這樣的語句在線修改表數據結構,會導致這張表無法進行更新類操作(DELETE、UPDATE、DELETE)。因此,直接ALTER是不行滴!

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

方式二:借助第三方工具

業內有一些第三方工具可以支持在線修改表結構,使用這些第三發工具,能夠讓你在執行ALTER操作的時候,表不會阻塞!比較出名的有兩個

pt-online-schema-change,簡稱pt-osc GitHub正式宣布以開源的方式發布的工具,名為gh-ost

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

1、創建一個新的表,表結構為修改后的數據表,用于從源數據表向新表中導入數據。

2、創建觸發器,用于記錄從拷貝數據開始之后,對源數據表繼續進行數據修改的操作記錄下來,用于數據拷貝結束后,執行這些操作,保證數據不會丟失。

3、拷貝數據,從源數據表中拷貝數據到新表中。

4、rename源數據表為old表,把新表rename為源表名,并將old表刪除。

5、刪除觸發器。

然而這兩個有意(KENG)思(B)的工具,居然。。。居然。。。唉!如果你的表里有觸發器和外鍵,這兩個工具是不行滴!如果真碰上了數據庫里有觸發器和外鍵,只能硬杠了,請看方式三方式三:改從庫表結構,然后主從切換此法極其麻煩,需要專業水平的選手進行操作。因為我們的mysql架構一般是讀寫分離架構,從機是用來讀的。我們直接在從庫上進行表結構修改,不會阻塞從庫的讀操作。改完之后,進行主從切換即可。唯一需要注意的是,主從切換過程中可能會有數據丟失的情況!

高深版

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

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

執行下列SQL

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

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

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

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

你:'這問題沒遇到過,因為自增主鍵我們用int類型,一般達不到最大值,我們就分庫分表了,所以不曾遇見過!'

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

標簽: MySQL 數據庫
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲视频二区| 一区二区三区视频免费观看| 国产精品毛片| 国产精品日本| 免费视频一区二区| 午夜精品免费| 欧美特黄一级| 在线亚洲精品| 亚洲综合日本| 日韩一区二区三区高清在线观看| 热久久久久久久| 亚洲区欧美区| 久久国产精品色av免费看| 日本视频一区二区| 色8久久久久| 欧美亚洲国产日韩| 欧美xxxx性| 精品成人免费一区二区在线播放| 国产真实久久| 日韩在线精品| 亚洲制服少妇| 日韩国产欧美三级| 美女免费视频一区| 久久精品国内一区二区三区水蜜桃| 国精品一区二区三区| 日韩在线成人| 精品女同一区二区三区在线观看| 伊人久久高清| 99热免费精品| 无码日韩精品一区二区免费| 国产探花一区| 日韩精品91| 丝袜美腿一区二区三区| 青青草国产成人99久久| 精品视频高潮| 999久久久亚洲| 蜜桃传媒麻豆第一区在线观看 | 久久久久久婷| 欧美一区三区| 亚洲精品日韩久久| 免费看久久久| 亚洲黑丝一区二区| 四虎成人精品一区二区免费网站| 国产精品一站二站| 电影天堂国产精品| 综合激情视频| 亚洲免费观看高清完整版在线观| 国产精品一区二区精品| 欧美手机在线| 日韩精品久久久久久| 国产精品久久久久久久久久10秀| 91久久久精品国产| 国产日韩在线观看视频| 在线午夜精品| 高清一区二区三区av| 亚洲一区二区网站| 精品午夜久久| 日韩精品一二三四| 国产一区不卡| 国产一级成人av| 亚洲大片在线| 麻豆精品新av中文字幕| 国产农村妇女精品一二区| 91欧美在线| 欧美日韩a区| 亚洲精品一二三区区别| 欧美激情视频一区二区三区在线播放| 韩日一区二区三区| 久久97久久97精品免视看秋霞| 亚洲欧美久久久| 国产精品精品国产一区二区| 日韩激情啪啪| 亚洲女同中文字幕| 精品国产欧美| 日韩国产在线观看| 国产毛片一区| 欧美午夜精彩| 国产一区二区三区天码| 影音先锋久久精品| 久久久一二三| 久久久久97| 日韩精品亚洲一区二区三区免费| 99成人在线视频| 麻豆国产精品一区二区三区| 在线视频亚洲欧美中文| 国产精品久久久久av蜜臀| 久久夜色精品| 欧美日韩在线播放视频| 久久香蕉网站| 日本成人精品| 久久都是精品| 国产66精品| 久久av导航| 日本精品一区二区三区在线观看视频| 欧美日韩国产综合网| 美女福利一区二区三区| 国产精品久久久久久模特| 亚洲精品综合| 不卡av一区二区| 日韩欧美看国产| 久久三级中文| 国产三级一区| 日韩1区2区3区| 国产精品婷婷| 欧美在线网站| 99在线观看免费视频精品观看| 九色porny丨国产首页在线| 麻豆国产欧美一区二区三区 | 亚洲欧美日韩一区在线观看| 久久精品亚洲人成影院| 国产96在线亚洲| 久久免费精品| 国产成人精品免费视| 欧美成人精品午夜一区二区| 欧美日韩亚洲三区| 久久午夜精品一区二区| 午夜在线一区二区| 不卡在线一区| 狠狠色综合网| 亚洲天堂成人| 999久久久91| 99免费精品| 午夜av一区| 国产精品视区| 亚洲精选91| 日韩一区中文| 国产欧美91| 麻豆一区二区在线| 成人国产精品久久| 日韩不卡免费高清视频| 国产99在线| 日韩精品麻豆| 欧美午夜不卡| 日本大胆欧美人术艺术动态| 亚洲精品中文字幕99999| 日韩影片在线观看| 国产精品高清一区二区| 精品国产成人| 夜鲁夜鲁夜鲁视频在线播放| 99久久亚洲精品| 日韩一级不卡| 免费人成精品欧美精品| 日本在线视频一区二区| 国产精品一区二区美女视频免费看| 麻豆传媒一区二区三区| 国产精品久久久久久久久久久久久久久 | 亚洲欧美一级| 久久精品 人人爱| 日产精品一区二区| 伊人久久在线| 黑丝一区二区三区| 日韩一区二区三区高清在线观看| 国产日产一区| 四虎4545www国产精品 | 五月天av在线| 日本欧美在线看| 欧美亚洲免费| 国产一二在线播放| 亚洲精品va| 日韩1区2区日韩1区2区| 高清久久一区| 99久久99久久精品国产片果冰| 噜噜噜躁狠狠躁狠狠精品视频| 欧美在线观看天堂一区二区三区| 精品视频99| 好看不卡的中文字幕| 日韩精品亚洲一区二区三区免费| 精品视频一二| 亚洲一区日本| 麻豆中文一区二区| 欧美亚洲在线日韩| 97久久超碰| 亚洲天堂1区| 亚洲日本欧美| www在线观看黄色| 97精品国产99久久久久久免费| 97精品国产一区二区三区| 在线一区欧美| 久久精品伊人| 日韩中文字幕麻豆| 精品精品99| 综合五月婷婷| 国产v综合v| 国产麻豆一区二区三区| 久久在线免费| 国产精品一区2区3区| 亚洲精品1区2区| 精品国产亚洲一区二区在线观看| 午夜在线视频一区二区区别| 久久香蕉网站| 亚洲综合专区| 久久男女视频| 国产日韩欧美高清免费| av亚洲免费| 国产中文欧美日韩在线 | 国产欧美另类| 亚洲欧美日本日韩| 日韩在线观看一区| 国产日产一区| 视频在线观看国产精品|