InnoDB é um mecanismo transacional. Isso significa que no seguinte cenário:
Session Ainsere o registro1Session Binsere o registro2Session Areverte
, existe a possibilidade de uma lacuna ou
session B bloquearia até a session A confirmado ou revertido. InnoDB designers (como a maioria dos outros designers de mecanismos transacionais) optaram por permitir lacunas. Da documentação> :
Ao acessar o contador de incremento automático,InnoDBusa umAUTO-INCespecial em nível de tabela lock que mantém até o final doSQLatual declaração, não até o final da transação. A estratégia especial de liberação de bloqueio foi introduzida para melhorar a simultaneidade de inserções em uma tabela contendo umAUTO_INCREMENTcoluna
…
InnoDBusa o contador de incremento automático na memória enquanto o servidor estiver em execução. Quando o servidor é parado e reiniciado,InnoDBreinicializa o contador de cada tabela para o primeiroINSERTà mesa, conforme descrito anteriormente.
Se você tem medo do
id coluna em volta, torne-a BIGINT (8 bytes de comprimento).