在InnoDB外在构造中,对每个含有自增长的表都有一个自增长计数器,当进行插入操作时,这个计数器会被初始化,执行如下语句失去计数器的值:
select max(auto_inc_col) from t from update
插入操作会根据这个自增长计数器值加1赋给自增长列,这个实现形式叫AUTO-INC Locking。此锁是采纳一种非凡的表锁机制,为了进步插入的性能,锁不是在一个事务实现后才开释,而是在实现对自增长值插入的SQL语句后立刻开释。但对于相似insert...select的插入则须要期待另一个事务完结,这样性能就降落了。
在版本mysql.5.1.22开始,InnDB提供了一种经量级互斥量的自增长实现机制以进步自增长值的插入性能,innodb_autoinc_lock_mode参数能够配置应用锁还是互斥量。
实践上mysql主键会用完,如果是int类型其最大值为4294967295;bigint则为18446744073709551615,这两个数据曾经很大了,不过不太可能会增长到那个时候,因为早就要进行分库分表了。
本文来自于《mysql技术底细 InnoDB存储引擎》一书