| Termin | Definicja |
|---|---|
| Transakcje | Transakcje to mechanizm gwarantujący spójność bazy danych podczas wykonywania wielu powiązanych operacji. Transakcja jako kontrolowany zestaw operacjiTransakcja w bazie danych łączy kilka powiązanych operacji w jedną jednostkę logiczną. Przykładowo, przelew może wymagać zmniejszenia salda na jednym koncie, zwiększenia salda na drugim oraz zapisania informacji o operacji. Bez transakcji awaria programu, utrata połączenia z bazą albo restart komputera mogłyby pozostawić tylko część zmian. Wtedy środki zostałyby odjęte z jednego miejsca, ale nie dopisane w drugim, a dane straciłyby spójność. Transakcja określa, że cały zestaw zmian ma zostać zatwierdzony albo wycofany. Typowy przebieg obejmuje rozpoczęcie transakcji, wykonanie instrukcji odczytu i zapisu, a następnie zakończenie jej przez zatwierdzenie albo anulowanie. Zatwierdzenie jest nazywane commit. Po nim system uznaje zmiany za zaakceptowane i udostępnia je zgodnie z regułami danego silnika. Anulowanie, czyli rollback, przywraca stan sprzed rozpoczęcia transakcji w zakresie operacji objętych tym mechanizmem. W aplikacji transakcja powinna obejmować dokładnie te działania, które muszą zachować wspólną poprawność, ale nie powinna trwać dłużej, niż jest to konieczne. Cztery właściwości poprawnego wykonaniaTransakcje opisuje się często za pomocą właściwości ACID. Litera A oznacza atomowość: transakcja jest traktowana jako całość, więc jej częściowe wykonanie nie powinno zostać uznane za poprawny wynik. C oznacza spójność, czyli przejście bazy z jednego stanu spełniającego reguły integralności do innego stanu spełniającego te reguły. Przykładem reguły jest klucz obcy, który nie pozwala zapisać odwołania do nieistniejącego rekordu, albo ograniczenie unikalności blokujące powtórzenie wartości w kolumnie. I oznacza izolację. Gdy kilka połączeń korzysta z bazy jednocześnie, sposób wzajemnego oddziaływania ich operacji zależy od poziomu izolacji. Przy słabszych ustawieniach możliwe są między innymi odczyty danych jeszcze niezatwierdzonych, powtórzenie zapytania z innym wynikiem albo pojawienie się nowych wierszy spełniających ten sam warunek. Przy silniejszej izolacji rośnie przewidywalność odczytów, ale mogą wzrosnąć blokady, czas oczekiwania i ryzyko konfliktu. Litera D oznacza trwałość: po prawidłowym zatwierdzeniu dane powinny przetrwać awarię procesu lub systemu, o ile mechanizmy zapisu i odzyskiwania silnika działają poprawnie. Blokady, współbieżność i wycofywanie zmianPodczas pracy transakcji silnik bazy musi kontrolować równoczesny dostęp do tych samych danych. W zależności od technologii może stosować blokady na poziomie wierszy, stron albo większych zakresów danych, a także mechanizmy wersjonowania zapisów. Blokada może uniemożliwić innemu połączeniu zmianę zajętego rekordu albo opóźnić jego odczyt. Jeżeli dwie transakcje czekają na zasoby zablokowane przez siebie nawzajem, powstaje zakleszczenie, określane jako deadlock. Silniki zwykle wybierają jedną transakcję jako ofiarę, wycofują ją i zwracają aplikacji błąd wymagający obsługi. Rollback nie zawsze oznacza prostą kopię całej bazy. Silnik zapisuje informacje pozwalające odtworzyć poprzedni stan zmodyfikowanych danych albo odtworzyć operacje w odpowiedniej kolejności. W aplikacji trzeba rozróżnić błąd pojedynczej instrukcji od błędu całej transakcji. Po nieudanym zapisie dalsze wykonywanie kolejnych poleceń może być niedozwolone lub prowadzić do nieprzewidywalnego wyniku, dlatego kod powinien wykryć wyjątek, wykonać wycofanie i dopiero potem zwolnić zasoby. Przy operacjach powtarzanych po konflikcie ważna jest również idempotencja, czyli możliwość ponowienia działania bez wielokrotnego zastosowania tego samego skutku. Transakcje w codziennym użyciu komputeraNa laptopie lub komputerze PC transakcje są zwykle obsługiwane przez aplikacje korzystające z bazy, a nie ręcznie przez użytkownika. Mogą występować w programach księgowych, systemach magazynowych, aplikacjach zakupowych, narzędziach synchronizacji oraz lokalnych bazach używanych przez oprogramowanie biurowe. Problemy z transakcjami mogą objawiać się komunikatami o blokadzie, przekroczeniu limitu czasu, konflikcie zapisu, nieudanym zatwierdzeniu lub konieczności ponowienia operacji. Sama obecność takiego komunikatu nie wskazuje jeszcze na uszkodzenie dysku; przyczyną może być błąd aplikacji, przerwane połączenie, zbyt długa transakcja, brak wolnego miejsca albo nieprawidłowa konfiguracja dostępu do danych. Podczas naprawy laptopa lub komputera warto odtworzyć kolejność zdarzeń: jaka aplikacja wykonywała zapis, czy problem powtarza się przy konkretnym pliku lub funkcji, czy występują błędy systemu plików oraz czy program zapisuje własne logi. Nie należy przerywać procesu zapisu przez wyłączanie komputera, jeśli aplikacja nadal odpowiada i wykonuje operację. Warszawskie Pogotowie Komputerowe zajmuje się profesjonalną naprawą laptopów, komputerów PC i ich podzespołów, a w przypadku problemów z aplikacją może sprawdzić objawy, stan systemu oraz sposób, w jaki program zapisuje i odczytuje dane. |