InnoDB
je transakční motor.
To znamená, že v následujícím scénáři:
Session A
vloží záznam1
Session B
vloží záznam2
Session A
vrá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ů
InnoDB
používá speciálníAUTO-INC
na úrovni tabulky zámek, který si ponechá na konec aktuálníhoSQL
vý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_INCREMENT
sloupec…
InnoDB
používá čítač automatického přírůstku v paměti, dokud server běží. Když je server zastaven a restartován,InnoDB
znovu inicializuje čítač pro každou tabulku pro prvníINSERT
ke stolu, jak bylo popsáno dříve.
Pokud se bojíte id
sloupec obtéká, aby byl BIGINT
(8 bajtů dlouhý).