結論
- 如果表的類型是 InnoDB,那么是 2;InnoDB 表只是把自增主鍵的最大 ID 記錄到內存中,所以重啟數據庫或者是對表進行 OPTIMIZE 操作,都會導致最大 ID 丟失。
- 如果表的類型是 MyISAM,那么是 5;因為 MyISAM 表會把自增主鍵的最大 ID 記錄到數據文件里,重啟 MySQL 自增主鍵的最大ID 也不會丟失。
下面真實模擬下這個問題
使用Innodb
新建表,主鍵設置自增
設置表引擎為InnoDB
?
新增數據:
?
刪除234
?
關閉服務、然后重啟服務
?
重啟服務之后,添加數據
?
結論:
如果表的類型是 InnoDB,那么是 2;InnoDB 表只是把自增主鍵的最大 ID 記錄到內存中,所以重啟數據庫或者是對表進行 OPTIMIZE 操作,都會導致最大 ID 丟失。
同上面的步驟,使用myIsam
新建表,引擎改為myisam
?
添加四條數據,id=1,2,3,4,刪除id=2,3,4的數據
?
重啟服務:id是5,不是2
?
結論:
如果表的類型是 MyISAM,那么是 5;因為 MyISAM 表會把自增主鍵的最大 ID 記錄到數據文件里,重啟 MySQL 自增主鍵的最大ID 也不會丟失。