InnoDB
er en transaktionsmotor.
Det betyder, at i følgende scenarie:
Session A
indsætter post1
Session B
indsætter post2
Session A
ruller tilbage
, er der enten mulighed for et hul eller session B
ville låse indtil session A
forpligtet eller rullet tilbage.
InnoDB
designere (som de fleste af de andre transaktionsmotordesignere) valgte at tillade huller.
Fra dokumentationen :
Når du får adgang til tælleren for automatisk stigning, InnoDB
bruger en speciel tabelniveau AUTO-INC
lås, som den holder til slutningen af den aktuelle SQL
erklæring, ikke til slutningen af transaktionen. Den særlige låsefrigørelsesstrategi blev introduceret for at forbedre samtidighed for indsættelser i en tabel, der indeholder en AUTO_INCREMENT
kolonne
…
InnoDB
bruger tælleren for automatisk stigning i hukommelsen, så længe serveren kører. Når serveren er stoppet og genstartet, InnoDB
geninitialiserer tælleren for hver tabel for den første INSERT
til bordet, som beskrevet tidligere.
Hvis du er bange for id
spalte ombrydes, gør den BIGINT
(8-byte lang).