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