一张表,里面有 ID 自增主键,当 insert 了 17 条记录之后,删除了第 15,16,17 条记录,再把MySQL 重启,再 insert 一条记录,这条记录的 ID 是 18 还是 15 ?
您好,
如果表的类型是 MyISAM,是 18。因为表会把自增主键的最大 ID 记录到数据文件里,重启后最大 ID 不会丢失。
如果表的类型是 InnoDB,那么是 15。InnoDB 表只是把自增主键最大 ID 记录到内存中,所以重启数据库或者是对表进行 优化[optimize] 操作,都会导致最大 ID 丢失。
跟数据库选择的引擎有关系,不同的引擎对应的数据文件不同。myIASM 会将自增id写入文件中,所以重启不会丢失。innodb会将最大id 保存在内存中,重启后内存中消失,再从数据库中查询出来重新建立缓存
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。