| Termin | Definicja |
|---|---|
| Transakcja jawna | Transakcja jawna wymaga ręcznego rozpoczęcia i zakończenia poleceniami BEGIN oraz COMMIT lub ROLLBACK. Ręczne sterowanie przebiegiem transakcjiTransakcja jawna to rozpoczęty przez programistę, administratora lub użytkownika logiczny zestaw operacji wykonywanych w bazie danych. Jej granice nie są pozostawione wyłącznie mechanizmowi automatycznego zatwierdzania pojedynczych poleceń. Autor kodu wskazuje moment rozpoczęcia transakcji, wykonuje w jej ramach odpowiednie instrukcje, a następnie podejmuje decyzję o zatwierdzeniu albo wycofaniu zmian. W typowym zapisie SQL do rozpoczęcia używa się polecenia Po wykonaniu Dlaczego jedna granica obejmuje wiele operacjiJawne transakcje są używane wtedy, gdy kilka operacji powinno zostać potraktowanych jako jeden spójny proces. Przykładem może być przeniesienie środków między dwoma rachunkami w aplikacji: zmniejszenie salda pierwszego rachunku i zwiększenie salda drugiego powinny zostać wykonane razem. Jeżeli pierwsza zmiana zakończy się powodzeniem, a druga nie, aplikacja może wykonać Takie działanie wiąże się z właściwościami transakcyjności określanymi skrótem ACID. Atomowość oznacza, że zestaw operacji jest traktowany jako całość: zostaje zatwierdzony albo wycofany. Spójność wymaga zachowania reguł integralności zdefiniowanych w bazie, na przykład ograniczeń klucza obcego lub unikalności. Izolacja określa, w jakim stopniu równolegle wykonywane transakcje widzą nawzajem swoje niezakończone zmiany. Trwałość oznacza, że po pomyślnym zatwierdzeniu dane powinny przetrwać awarię procesu, a w zakresie przewidzianym przez silnik także awarię systemu. Transakcja jawna nie gwarantuje automatycznie poprawności logiki biznesowej. Jeżeli program zatwierdzi dane w niewłaściwym momencie albo pominie istotną operację, baza może zachować technicznie poprawny, lecz niezgodny z założeniami stan. Granice transakcji powinny obejmować operacje, które muszą być spójne względem siebie, ale nie powinny być niepotrzebnie rozciągane na długie czynności niezwiązane z bazą. COMMIT, ROLLBACK i obsługa błędówW praktycznym kodzie decyzja o zatwierdzeniu transakcji powinna zależeć od wyniku wszystkich wymaganych operacji. Schemat logiczny wygląda następująco: aplikacja otwiera transakcję, wykonuje zestaw poleceń, sprawdza błędy i dopiero wtedy wywołuje Istotne jest rozróżnienie między zmianami zatwierdzonymi i niezatwierdzonymi. Zależnie od poziomu izolacji inne połączenie może nie widzieć zmian wykonanych w trwającej transakcji, może zobaczyć ich wersję albo może zostać zablokowane do czasu zakończenia operacji. Niezatwierdzona transakcja może również utrzymywać blokady na wierszach lub innych zasobach. Jeżeli pozostanie otwarta zbyt długo, może spowalniać inne zapytania, zwiększać zużycie pamięci i powodować zakleszczenia. Dlatego połączenie powinno zawsze zakończyć transakcję w przewidywalny sposób, także w ścieżce obsługi błędu. Polecenie Transakcja jawna w programie działającym na komputerzeUżytkownik zwykle nie wydaje poleceń Podczas diagnozowania problemu z aplikacją warto ustalić, czy program korzysta z autocommit, czy otwiera transakcje jawnie, kiedy wykonuje zatwierdzenie oraz jak reaguje na wyjątki. Objawami błędnej obsługi mogą być dane widoczne tylko w jednym oknie programu, brak zmian po ponownym uruchomieniu, blokady utrzymujące się długo po zakończeniu operacji albo powtarzające się komunikaty o konflikcie transakcji. Sama obecność polecenia Warszawskie Pogotowie Komputerowe zajmuje się profesjonalną naprawą laptopów, komputerów PC i podzespołów, dlatego przy problemach z aplikacją można rozpocząć diagnostykę od sprawdzenia systemu, połączenia z urządzeniami oraz poprawnego działania programu klienckiego. W przypadku samej bazy danych konieczne jest dodatkowo ustalenie używanego silnika, konfiguracji połączenia i logiki aplikacji, ponieważ znaczenie transakcji jawnej wynika z połączenia tych elementów, a nie tylko z pojedynczego polecenia SQL. |