InnoDB
is een transactie-engine.
Dit betekent dat in het volgende scenario:
Session A
voegt record1
inSession B
voegt record2
inSession A
rolt terug
, is er een mogelijkheid van een hiaat of session B
zou vergrendelen tot de session A
gepleegd of teruggedraaid.
InnoDB
ontwerpers (zoals de meeste andere transactionele engine-ontwerpers) kozen ervoor om hiaten toe te staan.
Uit de documentatie :
Bij toegang tot de teller voor automatisch ophogen, InnoDB
gebruikt een speciaal AUTO-INC
op tabelniveau slot dat het aan het einde van de huidige SQL
houdt verklaring, niet tot het einde van de transactie. De speciale ontgrendelingsstrategie is geïntroduceerd om de gelijktijdigheid van invoegingen in een tabel met een AUTO_INCREMENT
te verbeteren kolom
…
InnoDB
gebruikt de in-memory auto-increment-teller zolang de server draait. Wanneer de server wordt gestopt en opnieuw wordt opgestart, InnoDB
initialiseert de teller voor elke tafel opnieuw voor de eerste INSERT
naar de tafel, zoals eerder beschreven.
Als je bang bent voor de id
kolomomloop, maak het BIGINT
(8 bytes lang).