共计 491 个字符,预计需要花费 2 分钟才能阅读完成。
在 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 存储引擎》一书
正文完