InnoDB to silnik transakcyjny.
Oznacza to, że w następującym scenariuszu:
Session Awstawia rekord1Session Bwstawia rekord2Session Acofa się
, istnieje możliwość przerwy lub session B zablokuje się do session A zatwierdzone lub wycofane.
InnoDB projektanci (jak większość innych projektantów silników transakcyjnych) postanowili uwzględnić luki.
Z dokumentacji :
Podczas uzyskiwania dostępu do licznika automatycznego przyrostu, InnoDB używa specjalnego AUTO-INC na poziomie tabeli blokada, którą utrzymuje do końca bieżącego SQL oświadczenie, a nie do końca transakcji. Wprowadzono specjalną strategię zwalniania blokad, aby poprawić współbieżność dla wstawek do tabeli zawierającej AUTO_INCREMENT kolumna
…
InnoDB używa licznika automatycznego przyrostu w pamięci tak długo, jak działa serwer. Gdy serwer zostanie zatrzymany i zrestartowany, InnoDB ponownie inicjuje licznik dla każdej tabeli dla pierwszego INSERT do tabeli, jak opisano wcześniej.
Jeśli boisz się id zawijanie kolumn dookoła, zrób to BIGINT (8-bajtów długości).