不同的引擎对于自增值的保存策略不同
1.MyISAM引擎的自增值保存在数据文件中
2.InnoDB引擎的自增值,在MySQL5.7及之前的版本,自增值保存在内存里,并没有持久化。每次重启后,第一次打开表的时候,都会去找自增值的最大值max(id),然后将max(id)+步长作为这个表当前的自增值
select max(ai_col) from table_name for update;
在MySQL8.0版本,将自增值的变更记录在了redo log中,重启的时候依靠redo log恢复重启之前的值
ps:如果又两个相同的表又自增id,从A表复制到B表后再删除A表的数据,重启数据库后如果不重置A表的自增id,后面操作复制数据到B表会出现自增id冲突的问题
参考链接详解MySQL自增主键的实现