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.
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:
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.
Następnie sprawdziłam możliwość przeprowadzenia operacji delete oraz insert będąc cały czas w zablokowanej transakcji read write.
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:
Całość zaś zakończyłam wycofaniem wszystkich operacji co również zakończyło blokowanie Read Write.
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.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.Chociaż komunikat o powodzeniu jest widoczny w konsoli upewniłam się jeszcze poprzez nowe zapytanie select czy wszystko jest zaktualizowane.
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 :).