mysql自增長ID字段丟失問題及解決
之前面試的時候遇到一個問題,因為平時自己都是用的mysql 8.0+ 版本所以這里踩了一個坑記錄一下
一、場景
假如在對一個有自增長ID的一個表新增 id分別為 1,2,3,4,5數(shù)據(jù)時,在進(jìn)行刪除id 為5的數(shù)據(jù)成功后
mysql 宕機(jī)了,重啟了對這張表重新插入數(shù)據(jù),那么這個自增長ID 會從多少開始
二、場景分析
1.針對于innodb(MYSQL 事務(wù)存儲引擎)
在mysql 8.0 版本之前,mysql對于自增長ID屬性auto-increment 的值都是存儲在內(nèi)存中的,當(dāng)mysql發(fā)生重啟或者宕機(jī)的情況下,內(nèi)存中的值會丟失,這個屬性就會被重新計算,計算方式是max(自增長id)+1
在mysql 8.0 之前 針對這個問題進(jìn)行了修復(fù),把屬性auto-increment 放入到了本地磁盤中進(jìn)行一個持久化的操作
2.對于MyISAM(MYSQL 非事務(wù)存儲引擎)
MyISAM 的話在mysql 8.0和8.0之后都不會發(fā)生自增ID丟失的情況
總結(jié)
例如:
上述問題主要需要根據(jù)mysql版本和不同存儲引擎是否對自增長ID進(jìn)行一個持久化操作來進(jìn)行分析不同的情況
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
MySQL安裝時一直卡在starting?server的問題及解決方法
這篇文章主要介紹了MySQL安裝時一直卡在starting?server的問題及解決方法,出現(xiàn)這種情況大概有兩個原因,文中對每種原因給大家詳細(xì)介紹,需要的朋友可以參考下2022-06-06
解決mysql連接錯誤errorCode 0,state 08S01
這篇文章主要介紹了解決mysql連接錯誤errorCode 0,state 08S01,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-05-05
Mysql遷移到TiDB雙寫數(shù)據(jù)庫兜底方案詳解
這篇文章主要為大家介紹了Mysql遷移到TiDB雙寫數(shù)據(jù)庫兜底方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01

