栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Java

MySQL 的自增主键

Java 更新时间:发布时间: 百科书网 趣学号
0 前言

自增主键是数据库中最常用的功能之一,这里简单介绍一下 MySQL 自增主键的内部原理、加锁方式以及临界值的处理方式。

1 内部原理
  • 自增主键并不会固化存储,每次 MySQL Server 启动都会进行初始化,然后存储在内存中。
  • 每次 insert 之前就会对这个数字进行 +1。
  • 自增主键初始化的方式为 select max(max(id), 1) from table_name。
2 加锁方式
  • 互斥锁:如果是一个没有指定 id 的 insert 时,只会在获取 id 时对自增主键加一个互斥锁,锁很短。
  • 事务全程锁:如果是一个指定 id 的 insert,则会在 insert 事务提交后才释放锁,自增主键被锁的时间是整个事务执行的时间。
  • 如果使用了 insert into xxx select * from yyy; 或者 load file xxx;,则自增主键锁会持续到语句执行结束,会阻塞普通的 insert,是一个风险点。
3 临界值
  • 默认从 1 开始,当达到该类型的 MAX_VALUE 之后就会不再自增,如果还有新的 insert 进来,就会产生主键冲突异常。
  • 可以通过 alter table AUTO_INCREMENT=value; 来指定自增主键,但 value 只能为非负数。
转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/295606.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号