Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Dlaczego mysql pomija niektóre identyfikatory automatycznego przyrostu?

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pobieranie znacznika czasu za pomocą MySQL

  2. Nie można zalogować się za pomocą utworzonego użytkownika w mysql

  3. Jak zainstalować MySQL na Debianie 8?

  4. Jak wstawić obraz do bazy danych mysql (tabela)?

  5. Wstaw tam, gdzie nie istnieje — bez klucza podstawowego