自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

小黑提桶跑路啦!

數(shù)據(jù)庫(kù) MySQL
假如MySQL建表時(shí)主鍵ID是int32且自增的,誰(shuí)也沒(méi)想到業(yè)務(wù)發(fā)展這么快,今天忽然發(fā)現(xiàn)ID耗盡了,各種報(bào)警要炸鍋了,請(qǐng)求作為后端owner的你該如何處理?

[[415292]]

本文轉(zhuǎn)載自微信公眾號(hào)「后端研究所」,作者大白斯基 。轉(zhuǎn)載本文請(qǐng)聯(lián)系后端研究所公眾號(hào)。

大家好,我是后端研究所大白所長(zhǎng)!

今天和大家聊一個(gè)有趣的話題:

假如MySQL建表時(shí)主鍵ID是int32且自增的,誰(shuí)也沒(méi)想到業(yè)務(wù)發(fā)展這么快,今天忽然發(fā)現(xiàn)ID耗盡了,各種報(bào)警要炸鍋了,請(qǐng)求作為后端owner的你該如何處理?

話不多說(shuō),看看我的好兄弟小黑是如何處理的,開(kāi)車(chē)!

1方案一:怒刷簡(jiǎn)歷 提桶跑路

這個(gè)方案很簡(jiǎn)單,怎么處理我不管,提桶跑路!

OS-1:試想大家滿懷信心地加入到了一家公司,等待你的卻是屎山一樣的代碼。

OS-2:這個(gè)項(xiàng)目的紅利已經(jīng)被前輩們吃完了,剩下的就是需要人來(lái)維護(hù),哦,沒(méi)錯(cuò),沒(méi)有人會(huì)在意誰(shuí)在維護(hù)的,因?yàn)橐呀?jīng)沒(méi)人關(guān)注嘍。

OS-3:本以為要來(lái)指點(diǎn)江山,誰(shuí)知道卻是不停填坑,唉,搞了半天還是搞土木工程的!

內(nèi)心波瀾起伏,終于小黑決定關(guān)上手機(jī)、下班跑路,回家改起了簡(jiǎn)歷,決定提桶跑路。

畫(huà)外音:小黑這種做法是不可取的,畢竟跳槽很多時(shí)候就是從一個(gè)坑到另外一個(gè)坑,還是要正視問(wèn)題,努力解決才行嘛,最后我們祝福小黑。

2方案二:救命的空洞

報(bào)警還在呼呼發(fā),小黑的臉更黑了,內(nèi)心慌得一批,旁邊的同事大劉見(jiàn)狀說(shuō):"小黑別慌,先及時(shí)止損,再尋找徹底解決的方案"。

聽(tīng)聽(tīng),聽(tīng)聽(tīng),大劉一出手就是老架構(gòu)師的味道。

大劉深知光扯方法論有個(gè)屁用,拿出解決方案才是硬道理。圖片

大劉說(shuō):"小黑你看下這個(gè)表的ID是從1開(kāi)始的嗎?在建表初期有沒(méi)有空洞之類(lèi)的,先讓數(shù)據(jù)強(qiáng)制寫(xiě)到前面空洞區(qū)域,緩解一下線上危機(jī),再找DBA把ID的字段改成bigINT。"

小黑迅速get到大劉的意思,迅速看了一下,還真有100w的空洞啊!

小黑的淚水奪目而出,恨不得抱著大劉說(shuō):"恩人啊大劉。"

說(shuō)干就干,小黑花了10分鐘改完走了快速上線,終于報(bào)警慢慢降下來(lái)了,100w的空洞夠用幾天了,小黑的臉也沒(méi)這么黑了。

接著小黑找到了DBA老張,和老張說(shuō)明了情況于是開(kāi)始了在線修改字段類(lèi)型,由于表很大,這個(gè)操作非常耗時(shí),好在空洞可以撐一段時(shí)間。

終于在晚上6點(diǎn)表字段改成了bigint,從32位到64位再也不用擔(dān)心會(huì)耗盡了。

小黑拉上大劉和老張來(lái)到了肉串汪,好好謝謝這兩位大神。

畫(huà)外音:快謝謝身邊那些每次都提出切實(shí)可行方案的同事吧,要成為老架構(gòu)師的路還長(zhǎng)著呢,小黑加油!

3方案三:忍痛割?lèi)?ài)

報(bào)警就像龍卷風(fēng)一樣吹得小黑頭暈?zāi)垦#『谙氲搅藞D靈、想到了馮諾依曼、想到了馬云、想到了馬化騰...

一番思想斗爭(zhēng)之后,小黑決定迎難而上,干!

旁邊大劉湊過(guò)來(lái)說(shuō):"小黑別慌,這個(gè)是已知問(wèn)題,可能是之前的人沒(méi)交接清楚,挖了這個(gè)坑"。

小黑看著大劉說(shuō):"大劉有啥好辦法嗎?"

大劉道:"大原則是優(yōu)先止損,則深度解決,印象中ID是從1開(kāi)始的沒(méi)有空洞,但是早期的數(shù)據(jù)應(yīng)該不用了,你可以回收一波,騰出空間讓新數(shù)據(jù)寫(xiě)到舊ID上,業(yè)務(wù)影響有限可以及時(shí)止損。"

小黑get了大劉的意思,好在前幾天剛寫(xiě)了個(gè)刪庫(kù)腳本,沒(méi)想到派上用場(chǎng)了,小黑改了一點(diǎn)拿到線上環(huán)境回收了100w個(gè)ID,但是這100w個(gè)ID并不是連續(xù)的。

小黑想了一下,決定加個(gè)中間層,把這100w個(gè)ID先存儲(chǔ)到了redis中,線上服務(wù)先讀redis拿到可用的ID再進(jìn)行寫(xiě)庫(kù),從而緩解了問(wèn)題。

快速修復(fù)上線后,報(bào)警逐漸降下來(lái)了,于是小黑抓緊找到了DBA老張來(lái)修改ID字段類(lèi)型。

終于在晚上6點(diǎn)表字段改成了bigint,從32位到64位再也不用擔(dān)心會(huì)耗盡了。

小黑拉上大劉和老張來(lái)到了木屋燒烤,好好謝謝這兩位大神。

畫(huà)外音:?jiǎn)栴}總會(huì)有解決方案的,平時(shí)注意積累,關(guān)鍵時(shí)刻可以提供解決問(wèn)題的速度,平時(shí)多流汗,戰(zhàn)時(shí)少流淚。

4小結(jié)

對(duì)于這個(gè)問(wèn)題,網(wǎng)上很多相關(guān)的文章,基本上都是再說(shuō)改成bigint,這種說(shuō)法不能說(shuō)錯(cuò),但是不夠及時(shí)雨。

試想32位都寫(xiě)滿了的大表,改字段要消耗多久?這期間的新寫(xiě)數(shù)據(jù)怎么辦?并不能及時(shí)止損,P0事故是跑不了了。

除了文中的幾種方案,結(jié)合具體的場(chǎng)景還會(huì)有其他做法:比如新建一張表,雙讀&單寫(xiě)新表,總之方法不止一種,結(jié)合場(chǎng)景&及時(shí)止損才是真正的好方案。

就寫(xiě)這么多吧!

 

責(zé)任編輯:武曉燕 來(lái)源: 后端研究所
相關(guān)推薦

2021-09-26 09:22:59

遞歸代碼二叉樹(shù)

2011-10-12 10:24:03

筆記本評(píng)測(cè)

2011-12-22 14:13:19

筆記本評(píng)測(cè)

2024-03-25 00:03:00

生成式 AIAI

2012-03-12 15:32:41

ThinkPad筆記本

2020-10-10 14:54:11

HPAPaaS社區(qū)

2018-09-21 16:30:55

2013-02-19 09:56:26

2020-10-21 08:59:50

刪庫(kù)程序員虛擬機(jī)

2011-10-06 16:31:15

ThinkPad筆記本

2019-08-20 14:20:19

MySQL數(shù)據(jù)恢復(fù)數(shù)據(jù)庫(kù)

2020-08-05 11:50:47

刪庫(kù)MySQL數(shù)據(jù)庫(kù)

2020-03-03 17:28:39

CIO刪庫(kù)微盟

2024-03-29 08:08:25

2009-04-15 13:42:49

Windows 7預(yù)裝小黑

2012-03-29 16:18:58

聯(lián)想筆記本

2022-03-01 21:05:39

TCP網(wǎng)絡(luò)協(xié)議

2025-02-12 09:04:20

2015-08-14 17:33:21

114啦視頻

2015-03-23 10:29:47

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)