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

