[ Pobierz całość w formacie PDF ]
.Można to zrobić, umieszczając na końcu bloku else z wiersza 18) następującą instrukcję:EXEC SQL ROLLBACK;Jednakże w tym przypadku, czyli przy wyborze tej ścieżki w programie, nie pojawiły się żadne instrukcje modyfikacji, tj.żadne zmiany chwilowe nie następują, a zatem jest zupełnie obojętne czy zastosujemy instrukcję COMMIT, Czy ROLLBACK.a7.2.4.Transakcje tylko do odczytuTransakcje, opisane w przykładach 7.11 i 7.12, obejmowały odczyta­nie, a następnie w pewnych okolicznościach zapisanie danych do bazy da­nych.Omawiane transakcje przypominają problem sekwencyjności.Przed­7.2.TRANSAKCJE W JĘZYKU SQL 441stawiliśmy w przykładzie 7.11 konsekwencje jednoczesnego wywołania funkcji rezerwującej to samo miejsce w samolocie, a z kolei w przykładzie 7.12 uwidoczniono skutki awarii, która zdarza się w trakcie przetwarza­nia funkcji.Jednakże w przypadku transakcji, które powodują tylko odczyt danych, istnieje więcej swobody w równoległym przetwarzaniu wielu trans­akcj i'.PRZYKŁAD 7.14Rozważmy funkcję, która wczytuje dane z bazy po to, by stwierdzić, czy pewne miejsce jest dostępne; jej tekst stanowi fragment z rys.7.8 zapisany w wierszach od 1) do 11).Oczywiście bez szkody dla bazy danych możemy przetwarzać jednocześnie wiele wywołań tej funkcji.Najgorsze co może się stać, to że w trakcie odczytu dostępności miejsca inna funkcja właśnie to miejsce rezerwowała albo zwalniala.Można by zatem uzyskać informację o tym, że miejsce jest dostępne albo że jest niedostępne w pewnym niewielkim przesunięciu w czasie, ale odpowiedź ma sens.0Jeśli system SQL zostanie poinformowany o tym, że bieżąca transakcja jest tylko do odczytu, tzn.że jej działanie nie powoduje zmiany stanu bazy danych, to najczęściej ta informacja zostanie wykorzystana.Mimo że nie opi­szemy tutaj szczegółów tego mechanizmu, to należy zapamiętać, iż umożliwia on jednoczesne przetwarzanie wielu transakcji tylko do odczytu, które dzia­łają na tych samych danych, ale z kolei blokuje dane w przypadku transakcji, które zapisująnowe wartości w bazie.W języku SQL transakcje określa się jako tylko do odczytu w następują­cy sposób:SET TRANSACTION READ ONLY;Ta instrukcja musi wystąpić, zanim rozpocznie się transakcja.Gdyby to doty­czyło fragmentu funkcji zapisanej w wierszach od 1) do 11) na rys.7.8, to należaloby umieścić następującą instrukcjęEXEC SQL SET TRANSACTION READ ONLY;tuż przed wierszem 9), w którym transakcja się rozpoczyna.Umieszczenie tej deklaracji po wierszu 9) jest zbyt późne.Można przedstawić pewne porównanie transakcji z kursorami.Na przykład w p.7.1.10 zwróciliśmy uwagę na to, że można stosować więcej równoległości w przypadku kursorów przeznaczonych tylko do czytania danych niż w przypadku dowolnych kursów.Podobnie rzecz się ma z transakcjami, transakcje tylko do odczytu umożliwiają stosowanie równoległości w szerszym zakresie niż zwykłe transakcje.442 7 SYSTEMOWE ASPEKTY JĘZYKA SQLMożna także poinformować system SQL o tym, że transakcja powoduje zapis nowych wartości w bazie i stosuje się wówczas następującą instrukcję:SET TRANSACTION READ WRITE;Jednakże jest to opcja, która zazwyczaj występuje w języku SQL przez do­mniemanie, a zatem przeważnie nie trzeba jej stosować.7.2.5.Czytanie brudnopisuBrudnopis jest popularnym terminem dla danych zapisanych przez trans­akcję, która jeszcze nie została zatwierdzona.Czytanie brudnopisu oznacza po prostu czytanie danych brudnopisu.Ryzyko przy czytaniu tych danych polega na tym, że w końcowym efekcie transakcja może nie zostać zatwierdzona.Jeśli tak się stanie, to dane brudnopisu zostaną usunięte z bazy danych i wszystkie funkcje powinny dawać takie wyniki, jakby tych danych nigdy nie było w bazie.Jeśli jednak jakieś inne transakcje odczytały dane z brudnopisu, który został w rezultacie usunięty, to mogłoby to spowodować niekorzystne konsekwencje.Niekiedy odczytanie danych z brudnopisu ma znaczenie.A niekiedy ry­zyko jest tak niewielkie, że warto skorzystać z tej możliwości przy czaso­chłonnym przetwarzaniu i uniknąć w ten sposób dodatkowych czynności związanych z ochroną przed czytaniem brudnopisu [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • sp2wlawowo.keep.pl