InnoDB je transakční motor.
To znamená, že v následujícím scénáři:
Session Avloží záznam1Session Bvloží záznam2Session Avrátí zpět
, existuje buď možnost mezery nebo session B zamkne až do session A potvrzeno nebo odvoláno.
InnoDB návrháři (stejně jako většina ostatních konstruktérů transakčních motorů) se rozhodli umožnit mezery.
Z dokumentace :
Při přístupu k čítači automatických přírůstků
InnoDBpoužívá speciálníAUTO-INCna úrovni tabulky zámek, který si ponechá na konec aktuálníhoSQLvýpis, nikoli do konce transakce. Speciální strategie uvolnění zámku byla zavedena s cílem zlepšit souběžnost pro vkládání do tabulky obsahujícíAUTO_INCREMENTsloupec…
InnoDBpoužívá čítač automatického přírůstku v paměti, dokud server běží. Když je server zastaven a restartován,InnoDBznovu inicializuje čítač pro každou tabulku pro prvníINSERTke stolu, jak bylo popsáno dříve.
Pokud se bojíte id sloupec obtéká, aby byl BIGINT (8 bajtů dlouhý).