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

blokada tabeli po transakcji BeginTransaction MySql w c#.net

BeginTransaction nie oznacza, że ​​"Twoja transakcja rozpoczęła się i wszystko jest zablokowane". Po prostu informuje RDBMS o zamiarze zainicjowania transakcji i że wszystko, co powinieneś od teraz zrobić, powinno i musi być uważane za niepodzielne.

Oznacza to, że możesz wywołać BeingTransaction, a ja mógłbym usunąć wszystkie dane ze wszystkich tabel w Twojej bazie danych, a RDBMS z radością mi na to pozwoli. Mam nadzieję, że nie powinno mi to pozwolić na porzucenie DB, ponieważ masz z nim otwarte połączenie, jednak w dzisiejszych czasach nigdy nie wiadomo. Mogą istnieć pewne nieudokumentowane funkcje, o których nie wiem.

Atomowe oznacza, że ​​każde działanie lub zestaw działań musi być wykonane jako jedno. Jeśli któryś z nich zawiedzie, to wszystkie zawiodą. Jest to koncepcja wszystko albo nic.

Wygląda na to, że wstawiasz trzy wiersze do tabeli. Jeśli twoja tabela jest pusta lub ma bardzo małą liczbę wierszy, może zablokować całą tabelę w zależności od reguł LOCK ESCALATION twojego RDBMS. Jeśli jednak jest to duża, bardzo duża lub podzielona na partycje tabela, reguły eskalacji LOCK mogą nie gwarantować zablokowania tabeli. Dlatego nadal może być możliwe, aby wiele transakcji wstawiało wiersze do tabeli w tym samym czasie. Wszystko zależy od tego, jak RDBMS poradzi sobie z tą sytuacją i jak skonstruowany jest model danych.

Teraz odpowiem na Twoje pytanie:

WSKAZÓWKA - Poszukaj sposobu na zablokowanie całej tabeli przed rozpoczęciem wstawiania danych.

Jednak zazwyczaj nie jest to dobre, ale zakładam, że masz uzasadniony powód, aby to zrobić.

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. Uzyskać najnowszy wstawiony identyfikator w wyzwalaczu?

  2. przekazać plik sql do nodejs do wykonania jako całość

  3. MySql:Jak wywołać procedurę składowaną przed deklaracją instrukcji

  4. ChNP Przygotowane oświadczenie Wewnątrz klasy

  5. Wstaw dane klienta do bazy danych MySQL za pomocą C