To przykład blokowania auto inkrementacji w InnoDB:Ponieważ wykonujesz 2 instrukcje jednocześnie w tej samej sesji:blokadę auto inc uzyskuje się przez pierwsze zapytanie, a generowanie wartości autoinkrementacji nie jest przeplatane między instrukcjami - i o to chodzi transakcji.
To zawsze będzie się działo zgodnie z projektem:gdyby tak się nie stało, sposób działania transakcji w InnoDB nie działałby. Skalowalność pod obciążeniami typu OLTP byłaby okropna, ponieważ każdy wstawka musiałaby czekać na zakończenie, zatwierdzenie lub co gorsza co drugą wstawkę.
Np.:Jeśli twoja pierwsza wstawka działa 5 razy dłużej niż druga, nie powiedzie się i zostanie wycofana, druga nadal się kończy i została zatwierdzona. W przeciwnym razie musiałbyś poczekać na ea. zapytanie do uzupełnienia po drugim.
Jeśli potrzebujesz sekwencyjnych i absolutnie unikalnych identyfikatorów, pobierz je z innego źródła. Kolumny AutoInc po prostu gwarantują unikalną wartość - niekoniecznie monosekwencję - która jest punktem serializacji i wąskim gardłem.
Można to obejść, jeśli jest to wymagane:
ustaw innodb_autoinc_lock_mode = 0
w twoim my.cnf/mysql.ini
Opis automatycznego blokowania inc w InnoDB i opcjach