InnoDB
es un motor transaccional.
Esto significa que en el siguiente escenario:
Session A
inserta registro1
Session B
inserta registro2
Session A
retrocede
, existe la posibilidad de una brecha o session B
bloquearía hasta la session A
confirmado o revertido.
InnoDB
los diseñadores (como la mayoría de los otros diseñadores de motores transaccionales) optaron por permitir brechas.
De la documentación :
Al acceder al contador de incremento automático, InnoDB
utiliza un AUTO-INC
especial a nivel de tabla bloqueo que mantiene hasta el final del SQL
actual estado de cuenta, no hasta el final de la transacción. La estrategia de liberación de bloqueo especial se introdujo para mejorar la concurrencia de inserciones en una tabla que contiene un AUTO_INCREMENT
columna
…
InnoDB
utiliza el contador de incremento automático en memoria mientras se ejecuta el servidor. Cuando el servidor se detiene y reinicia, InnoDB
reinicializa el contador de cada tabla para el primer INSERT
a la mesa, como se describió anteriormente.
Si tienes miedo del id
columna envolviendo, hazlo BIGINT
(8 bytes de largo).