Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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.
- -- Wstępnie ustawiamy izolację transakcji na READ COMMITTED
- SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
- -- Transakcja 1
- BEGIN TRANSACTION;
- -- Wczytanie informacji o zgłoszeniach awarii dla konkretnego urządzenia
- SELECT *
- FROM Device_Failures
- WHERE device_id = 'Device_1';
- -- Czekamy 10 sekund na wykrycie zgłoszenia awarii przez inną transakcję
- WAITFOR DELAY '00:00:10';
- -- Transakcja 2
- BEGIN TRANSACTION;
- -- Aktualizacja stanu urządzenia
- UPDATE Renewable_Energy_Devices
- SET device_status = 6
- WHERE device_id = 'Device_1';
- -- Zatwierdzenie zmian w transakcji 2
- COMMIT TRANSACTION;
- -- Zakończenie transakcji 1
- COMMIT TRANSACTION;
- 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