AUTO INCREMENT
系统自动给有AUTO INCREMENT修饰的列进行递增赋值的实现方式为以下两个:
- AUTO_INC:表级别锁,执行插入语句时加锁,分配递增的值,执行结束后释放
- 轻量级的锁:在为插入语句生成自增值时获取轻量级锁,生成值之后就释放掉,不需要等到整个插入语句执行完后才释放。
系统变量innodb_autoinc_lock_mode
可以通过此系统变量控制使用哪种锁方式
修改自增锁级别方法:编辑/etc/my.cnf,加入如下行:innodb_autoinc_lock_mode=2
- innodb_autoinc_lock_mode值为0时,一律采用AUTO_INC锁
- innodb_autoinc_lock_mode值为2时,一律采用轻量锁
- innodb_autoinc_lock_mode值为1时,两种锁混着用
- 执行前并不确定具体要插入多少条数据
例如使用:INSERT… SELECT、REPLACE…SELECT、LOAD DATA - 执行前就可以确定具体要插入多少条数据
AUTO-INC锁的作用范围只是单个插入语句,在执行语句执行完成之后这个锁就被释放了,并不需要等事务结束时才释放。