开发者社区> 问答> 正文

一个MySQL数据库相关问题

已解决

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

展开
收起
可乐大侠 2021-10-01 17:11:44 975 0
2 条回答
写回答
取消 提交回答
  • 网络规划设计师、敏捷专家、CISP、ITSS服务经理、ACA全科目、ACP4项、ACE、CBP、CDSP、CZTP等。拥有 PRINCE2 Foundation/Practitioner、CCSK、ITIL、ISO27001、PMP等多项国际认证。 专利5+、期刊10+、知识产权师。核心期刊审稿人。
    采纳回答

    您好,

    如果表的类型是 MyISAM,是 18。因为表会把自增主键的最大 ID 记录到数据文件里,重启后最大 ID 不会丢失。
    如果表的类型是 InnoDB,那么是 15。InnoDB 表只是把自增主键最大 ID 记录到内存中,所以重启数据库或者是对表进行 优化[optimize] 操作,都会导致最大 ID 丢失。
    
    2021-10-01 17:13:41
    赞同 展开评论 打赏
  • 即使是搬砖,也要有自己的姿势

    跟数据库选择的引擎有关系,不同的引擎对应的数据文件不同。myIASM 会将自增id写入文件中,所以重启不会丢失。innodb会将最大id 保存在内存中,重启后内存中消失,再从数据库中查询出来重新建立缓存

    2021-10-11 18:01:10
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
数据库2025 V3 立即下载
为什么PostgreSQL是最适合去O的数据库 立即下载
《阿里云数据库 MongoDB 专属集群版》 立即下载