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

Zachowanie MySQL „wybierz do aktualizacji”

Pozwól, że przejdę przez twoje przypadki i wyjaśnię, jak działają te zamki:

1 sprawa

T1 chce zaktualizować niektóre wiersze w Twojej tabeli testowej. Ta transakcja ustawia blokadę IX na wszystkich stołach i blokadę X na pierwszych 5 rzędach.

T2 chce zaktualizować niektóre wiersze w Twojej tabeli testowej. Ta transakcja umieszcza blokadę IX (ponieważ IX jest zgodny z IX) na całej tabeli i próbuje wykonać pierwsze 5 wierszy, ale nie może tego zrobić, ponieważ X nie jest zgodny z X

Więc u nas wszystko w porządku.

2.1 przypadek

T1 chce zaktualizować niektóre wiersze w Twojej tabeli testowej. Ta transakcja umieściła blokadę IX na wszystkich stołach i blokadę X na pierwszych 5 rzędach.

T2 chce wybrać kilka wierszy z tabeli testowej. I nie nakłada żadnych blokad (ponieważ InnoDB zapewnia odczyty bez blokowania)

2.1 przypadek

T1 chce zaktualizować niektóre wiersze w Twojej tabeli testowej. Ta transakcja umieściła blokadę IX na wszystkich stołach i blokadę X na pierwszych 5 rzędach.

T2 chce zaktualizować (wybrać do aktualizacji) niektóre wiersze z Twojej tabeli testowej. Umieść IS na całym stole i próbuje uzyskać blokadę S w wierszu i kończy się niepowodzeniem, ponieważ X i S są niekompatybilne.

Zawsze pamiętaj również o poziomie izolacji:inny poziom powoduje inny mechanizm zwalniania/nabywania blokad

Mam nadzieję, że to pomoże




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak dodać regułę walidatora połączonych unikalnych pól w Laravel 4?

  2. MYSQL:różnica między binarnym a Blob

  3. Przewodnik po projektowaniu bazy danych dla Menedżera zadań w MySQL

  4. Połącz bazę danych MySQL z Androida

  5. Przewodnik po projektowaniu bazy danych dla systemu zamówień restauracji w MySQL