środa, 19 września 2018

MySQL – Transakcje

MySQL – Transakcje


Transakcja jest kolejną grupą operacji manipulowania bazami danych, która jest wykonywana tak, jakby była jedną jednostką pracy. Innymi słowy, transakcja nigdy nie zostanie zakończona, dopóki każda pojedyncza operacja w ramach grupy nie zakończy się sukcesem. Jeśli jakakolwiek operacja w ramach transakcji nie powiedzie się, cała transakcja zakończy się niepowodzeniem.
Praktycznie, wykonajcie wiele zapytań SQL do grupy i wykonacie je wszystkie razem jako część transakcji.

Właściwości transakcji

Transakcje mają następujące cztery standardowe właściwości, zwykle określane skrótem ACID  −
·      Atomicity – (atomowość) zapewnia to, że wszystkie operacje w jednostce roboczej zostały zakończone pomyślnie; w przeciwnym razie transakcja zostanie przerwana w momencie awarii, a poprzednie operacje zostaną przywrócone do poprzedniego stanu.
·      Consistency – (spójność) Zapewnia to, że baza danych odpowiednio zmienia stany po pomyślnie zatwierdzonej transakcji..
·      Isolation – (izolacja) Umożliwia to niezależne działanie transakcji i wzajemną przejrzystość.
·      Durability – (trwałość) zapewnia to, że wynik lub skutek zatwierdzonej transakcji będzie się utrzymywał w przypadku awarii systemu.

W MySQL transakcje rozpoczynają się od instrukcji BEGIN WORK i kończą się instrukcją COMMIT lub ROLLBACK . Polecenia SQL między instrukcjami początkowymi i końcowymi stanowią większość transakcji.

COMMIT i ROLLBACK

Te dwa słowa kluczowe Commit and Rollback są używane głównie w transakcjach MySQL

Te dwa słowa kluczowe Commit and Rollback są używane głównie w transakcjach MySQL.
·        Po udanej transakcji komenda COMMIT powinna zostać wydana, aby zmiany we wszystkich zaangażowanych tabelach zaczęły obowiązywać.
·        Jeśli wystąpi awaria, powinna zostać wydana komenda ROLLBACK, aby zwrócić wszystkie tabelki podane w transakcji do poprzedniego stanu

Możesz kontrolować zachowanie transakcji, ustawiając zmienną sesji o nazwie AUTOCOMMIT. Jeśli AUTOCOMMIT ma wartość 1 (wartość domyślna), każda instrukcja SQL (w ramach transakcji lub nie) jest uważana za pełną transakcję i domyślnie zatwierdzona po zakończeniu.
Gdy AUTOCOMMIT ma wartość 0, wydając komendę SET AUTOCOMMIT = 0, kolejne serie instrukcji działają jak transakcja i żadne działania nie są zatwierdzane, dopóki nie zostanie wydana jawna instrukcja COMMIT.
Możesz wykonywać te polecenia SQL w PHP przy użyciu funkcji mysql_query().

Ogólny przykład transakcji

Ta sekwencja zdarzeń jest niezależna od używanego języka programowania. Ścieżkę logiczną można utworzyć w dowolnym języku używanym do tworzenia aplikacji.
Możesz wykonywać te polecenia SQL w PHP przy użyciu funkcji mysql_query().
·        Rozpocznij transakcję, wydając polecenie SQL BEGIN WORK .
·        Należy wydać jedno lub więcej poleceń SQL, takich jak SELECT, INSERT, UPDATE lub DELETE.
·        Sprawdź, czy nie ma błędu i wszystko jest zgodne z wymaganiami.
·        Jeśli wystąpi jakiś błąd, wydaj polecenie ROLLBACK, w przeciwnym razie wpisz polecenie COMMIT.

Typy tabel bezpieczne dla transakcji w MySQL


Nie możesz korzystać z transakcji bezpośrednio, ale z pewnymi wyjątkami możesz. Jednak nie są one bezpieczne i gwarantowane. Jeśli planujesz korzystać z transakcji w twoim programie MySQL, musisz utworzyć swoje tabele w specjalny sposób. Istnieje wiele rodzajów tabel, które obsługują transakcje, ale najpopularniejszym jest InnoDB.
Obsługa tabel InnoDB wymaga określonego parametru kompilacji podczas kompilowania MySQL ze źródła. Jeśli twoja wersja MySQL nie obsługuje InnoDB, poproś swojego dostawcę usług internetowych, aby zbudował wersję MySQL z obsługą typów tabel InnoDB, lub pobierz i zainstaluj MySQL-Max Binary Distribution dla Windows lub Linux/UNIX i pracuj z typem tabeli w środowisko programistyczne.
Jeśli twoja instalacja MySQL obsługuje tabele InnoDB, po prostu dodaj definicję TYPE = InnoDB do instrukcji tworzenia tabeli.
Na przykład poniższy kod tworzy tabelę InnoDB o nazwie tcount_tbl 
root@host# mysql -u root -p password;
Enter password:*******

mysql> use KURS;
Database changed

mysql> create table kurs_ils_tbl
   -> (
   -> kurs_author varchar(40) NOT NULL,
   -> kurs_ilosc  INT
   -> ) TYPE = InnoDB;
Query OK, 0 rows affected (0.05 sec)

Aby uzyskać więcej informacji na temat InnoDB, możesz kliknąć poniższy link - InnoDB
Możesz użyć innych typów tabel, takich jak GEMINI lub BDB , ale zależy to od Twojej instalacji, niezależnie od tego, czy obsługuje ona te dwa typy tabel, czy nie.


Brak komentarzy:

Prześlij komentarz