set transaction w Oracle możliwe opcje.

Read Only i Read Write

W dzisiejszym artykule omówię na czym polegają transakcje Read Only i Read Write. We wcześniejszych artykułach opisałam ogólny podział izolacji transakcji w bazie danych Oracle: Read Commited i Serializable. Jeśli więc ich jeszcze nie czytałeś/czytałaś serdecznie Cię tam zapraszam.

2.1 Read Only.

W transakcjach read only operacje typu update, delete nie są dozwolone. Jedyne co możemy to odczytać wiersze. Ustawienie transakcji musi nastąpić przed jej rozpoczęciem. Następnie wykonałam operacje odczytu i próbę modyfikacji wybranego rekordu.
Transakcja Read Only: błąd podczas modyfikacji danych.
Jak widać powyżej został zgłoszony error który informuj o nie możliwości dokonywania jakichkolwiek zmian w transakcji read only. Dotyczy to wszystkich tabl w naszej schemie. Przetestujmy to i spróbujmy odczytać inną tabelę i zmodyfikować jej rekord:
Transacja Read Only. Sprawdzenie innej tabeli w tej samej Schemie
Transakcja Read Only: błąd podczas modyfikacji danych w innej tabli w tej samej Schemie.
Wynik jaki uzyskałam jest dokładnie taki sam jak wcześniej. Zakończmy więc transakcje i przejdźmy do blokowania transakcji typu read write.

2.2 Read Write.

Podobnie jak wcześniej rozpoczęłam od ustawienia transakcji i odczytu danych w tabeli. Następnie wykonałam aktualizacje jednego z rekordów.
Transakcja Read Write: modyfikacja danych
Sesja nr 2: Transakcja Read Write: modyfikacja danych.

Chociaż komunikat o powodzeniu jest widoczny w konsoli upewniłam się jeszcze poprzez nowe zapytanie select czy wszystko jest zaktualizowane.

Transakcja Read Write: sprawdzenie modyfikacji dancyh.
Sesja nr 2: Transakcja Read Write: sprawdzenie modyfikacji dancyh.
Następnie sprawdziłam możliwość przeprowadzenia operacji delete oraz insert będąc cały czas w zablokowanej transakcji read write.

Operacja delete.
Operacja delete.
Jak widać wszystko przebiegło bez problemów i tabela nie posiada już żadnych rekordów. W przypadku operacji insert wygląda to następująco:

Operacja insert
Operacja insert.
Całość zaś zakończyłam wycofaniem wszystkich operacji co również zakończyło blokowanie Read Write.

3. Podsumowanie.

Jak jest więc różnica pomiędzy Serializable a Read Only? Te drugie zawierają się w pierwszych. Np. Read Only jest podzbiorem (subset) dla Serializable. Natomiast Seralizable jest nadzbiorem (superset) dla Read Only. Oznacza to że Serializable pozwala na modyfikacje danych w transakcji, podczas gdy w Read Only jest to niemożliwe. Natomiast Read Write zachowuje się podobnie do Read Commited. Zachęcam Cię jednak czytelniku do przetestowania tego samodzielnie :).

Leave a Comment

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *