mysql中,一张表里面有 ID 自增主键,当 insert 了 17 条记录之后,删除了第 15,16,17 条记录,再把 Mysql 重启,再 insert 一条记录,这条记录的 ID 是 18 还是 15 ?
-
MySQL8.0以下版本:
- 表类型为InnoDB引擎,这条记录的ID是15。因为InnoDB只把自增主键的最大ID记录到内存中,所以重启MySQL或者对表进行OPTIMIZE操作,都会使得最大ID丢失
- 表类型为MylSAM引擎,这条记录的ID是18。因为MyISAM会把自增主键的最大ID记录到数据文件里面,重启MySQL之后,自增主键的最大ID也不会丢失
-
MySQL8.0以及以上版本
- 这条记录的ID是18,因为这个版本保证ID的值是在redo日志中的,重启之后是可以恢复的