一张表里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把mysql重启,再insert一条记录,这条记录的ID是18还是15 ?

Posted 星星下的石头

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一张表里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把mysql重启,再insert一条记录,这条记录的ID是18还是15 ?相关的知识,希望对你有一定的参考价值。

转:https://blog.csdn.net/xzp_12345/article/details/79458586

 

一般情况下,我们创建的表的类型是InnoDB,如果新增一条记录(不重启mysql的情况下),这条记录的id是18;但是如果重启(文中提到的)MySQL的话,这条记录的ID是15。因为InnoDB表只把自增主键的最大ID记录到内存中,所以重启数据库或者对表OPTIMIZE操作,都会使最大ID丢失。

 

        但是,如果我们使用表的类型是MylSAM,那么这条记录的ID就是18。因为MylSAM表会把自增主键的最大ID记录到数据文件里面,重启MYSQL后,自增主键的最大ID也不会丢失。

 

 

注:如果在这17条记录里面删除的是中间的几个记录(比如删除的是10,11,12三条记录),重启MySQL数据库后,insert一条记录后,ID都是18。因为内存或者数据库文件存储都是自增主键最大ID

以上是关于一张表里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把mysql重启,再insert一条记录,这条记录的ID是18还是15 ?的主要内容,如果未能解决你的问题,请参考以下文章

55 道MySQL基础题

面试题04有关Mysql

关于Mysql面试需要掌握的知识点

关于Mysql面试需要掌握的知识点

大厂面试必问:MySQL夺命连环55问

技术分享 关于 MySQL 自增 ID 的事儿