InnoDB是一个交易引擎。
这意味着在以下情况下:
Session A
插入记录1
Session B
插入记录2
Session A
回滚
,则存在间隙的可能性,或者
session B将锁定直到
session A提交或回滚。
InnoDB设计人员(与大多数其他事务引擎设计人员一样)选择留出空隙。
从 文档中 :
访问自动增量计数器时,请
InnoDB使用特殊的表级AUTO-INC锁,该锁保留在当前SQL语句的末尾,而不是事务的末尾。引入了特殊的锁定释放策略,以提高插入到包含AUTO_INCREMENT列的表中的并发性…
InnoDB只要服务器运行,就使用内存中自动增量计数器。如前所述,当服务器停止并重新启动服务器后,请InnoDB为每个表的第一个表重新初始化计数器INSERT。
如果您担心
id列会缠绕,请使其
BIGINT(8字节长)。



