Advertisement
JanuszKowalski123

brudny odczyt 2

May 14th, 2024 (edited)
9
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.51 KB | None | 0 0
  1. Aby zilustrować "brudny odczyt" na bazie danych w silniku MS SQL Server, możemy użyć dwóch tabel: Renewable_Energy_Devices i Device_Failures. W tabeli Device_Failures będziemy zapisywać zgłoszenia awarii urządzeń, a w tabeli Renewable_Energy_Devices będą przechowywane informacje o tych urządzeniach.
  2.  
  3.  
  4. -- Wstępnie ustawiamy izolację transakcji na READ COMMITTED
  5. SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
  6.  
  7. -- Transakcja 1
  8. BEGIN TRANSACTION;
  9.  
  10. -- Wczytanie informacji o zgłoszeniach awarii dla konkretnego urządzenia
  11. SELECT *
  12. FROM Device_Failures
  13. WHERE device_id = 'Device_1';
  14.  
  15. -- Czekamy 10 sekund na wykrycie zgłoszenia awarii przez inną transakcję
  16. WAITFOR DELAY '00:00:10';
  17.  
  18. -- Transakcja 2
  19. BEGIN TRANSACTION;
  20.  
  21. -- Aktualizacja stanu urządzenia
  22. UPDATE Renewable_Energy_Devices
  23. SET device_status = 6
  24. WHERE device_id = 'Device_1';
  25.  
  26. -- Zatwierdzenie zmian w transakcji 2
  27. COMMIT TRANSACTION;
  28.  
  29. -- Zakończenie transakcji 1
  30. COMMIT TRANSACTION;
  31.  
  32.  
  33. W tym scenariuszu transakcja 1 odczytuje informacje o zgłoszeniach awarii dla konkretnego urządzenia (na przykład 'Device_1'). Po wczytaniu tych informacji czeka 10 sekund na wykrycie zgłoszenia awarii przez inną transakcję. W międzyczasie transakcja 2 aktualizuje stan urządzenia 'Device_1', ustawiając go na status awarii (6). Po zakończeniu tej transakcji, transakcja 1 kończy się, jednak informacje o zgłoszeniu awarii, które zostały wczytane w transakcji 1, mogą być nieaktualne, co jest typowym przykładem "brudnego odczytu".
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement