一張表裏面有ID自增主鍵,當insert了17條記錄之後,刪除了第15,16,17條記錄,再把mysql重啓,再insert一條記錄,這條記錄的ID是18還是15 ?

一般情況下,我們創建的表的類型是InnoDB,如果新增一條記錄(不重啓mysql的情況下),這條記錄的id18;但是如果重啓(文中提到的)MySQL的話,這條記錄的ID15。因爲InnoDB表只把自增主鍵的最大ID記錄到內存中,所以重啓數據庫或者對錶OPTIMIZE操作,都會使最大ID丟失。

 

        但是,如果我們使用表的類型是MylSAM,那麼這條記錄的ID就是18。因爲MylSAM表會把自增主鍵的最大ID記錄到數據文件裏面,重啓MYSQL後,自增主鍵的最大ID也不會丟失。

 

 

注:如果在這17條記錄裏面刪除的是中間的幾個記錄(比如刪除的是10,11,12三條記錄),重啓MySQL數據庫後,insert一條記錄後,ID都是18。因爲內存或者數據庫文件存儲都是自增主鍵最大ID

發佈了71 篇原創文章 · 獲贊 76 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章