wyklad bd jwr 6

background image

slajd 1

© J.Rumiński

Jacek Rumiński

Bazy danych

Kontakt:

Katedra Inżynierii Biomedycznej, pk.

106,

tel.: 3472678, fax: 3461757,
e-mail: jwr@eti.pg.gda.pl

background image

slajd 2

© J.Rumiński

Transakcje

-Co to jest

-ACID

-Izolowanie

-Transakcja składa się z jednego lub więcej poleceń, które
zostały wywołane, wykonane i potwierdzone (Commit) lub
odrzucone (RollBack). Transakcja stanowi więc
jednostkową operację.

background image

slajd 3

© J.Rumiński

Transakcje lokalne:

– Dotyczą jednego serwera bazy danych

– Obsługiwane przez dany serwer bazy danych

Transakcje globalne (rozproszone):

– Dotyczą więcej niż jednego serwera bazy danych

– Serwery mogą pochodzić od różnych dostawców
(heterogeniczne transakcje globalne)

– Obsługiwane przez zarządcę transakcji (ang. Transaction
manager):

• Zewnętrzny (np. dostępny w ramach serwera aplikacji)

• Wbudowany w jeden z serwerów biorących udział w
transakcji

background image

slajd 4

© J.Rumiński

Własności transakcji (ACID)

Atomowość (ang. atomicity)

– zbiór operacji składowych transakcji musi być wykonany w
całości lub wcale

Spójność (ang. consistency)

– transakcja przeprowadza bazę danych z jednego stanu
spójnego do innego stanu spójnego

Izolacja (ang. isolation)

– polega na logicznym odseparowaniu od siebie transakcji
współbieżnie wykonywanych w systemie (możliwe różne
poziomy izolacji)

Trwałość (ang. durability)

– Odporność wyników zatwierdzonej transakcji na awarię
systemu

background image

slajd 5

© J.Rumiński

Dla zapewnienia własności atomowości transakcji
rozproszonych opracowano protokół zatwierdzania
dwufazowego (2-Phase Commit)

• 1 – Prepare: węzły (serwery) biorące udział w transakcji
przygotowują się do jej zatwierdzenia (na żądanie
koordynatora transakcji)

• 2 – Commit: gdy wszystkie węzły są gotowe do
zatwierdzenia transakcji następuje jej rzeczywiste
zatwierdzenie

AUTOCOMMIT(FALSE):

HSQL:

SET AUTOCOMMIT { TRUE | FALSE } ; Switches on or off the
connection's auto-commit mode. If switched on, then all
statements will be committed as individual transactions.
Otherwise, the statements are grouped into transactions
that are terminated by either COMMIT or ROLLBACK. By
default, new connections are in auto-commit mode.

background image

slajd 6

© J.Rumiński

Zarządzanie transakcją jest szczególnie ważne gdy chcemy
wykonać naraz kilka operacji. Wówczas konieczne jest
ustawienie

pracy

w

stanie

bez

potwierdzania

(Connection.setAutoCommit(false)- domyślnie ustawiona
jest praca z automatycznym potwierdzaniem), a następnie
po wykonaniu wyrażeń SQL wydawany jest rozkaz
potwierdzenia (Connection.commit()). Potwierdzenie jest
poleceniem, które powoduje, że zmiany spowodowane
wyrażeniem SQL stają się stałe. W przypadku błędu (np.
spowodowanego awarią sieci komputerowej) można wysłać
polecenie przerwania (RollBack) powodujące odtworzenie
stanu przed wykonaniem wyrażenia. Podsumowując można
powiedzieć, że efekt działania każdego polecenia SQL jest
tymczasowy

do

momentu

wysłania

polecenia

potwierdzenia, kiedy to zmiany stają się stałe lub do
momentu wysłania polecenia przerwania, kiedy to
odtwarzany jest stan przed wykonaniem polecenia.

background image

slajd 7

© J.Rumiński

JDBC dodatkowo wprowadza szereg mechanizmów pracy z
transakcjami jak:

- obsługa paczek poleceń SQL:

 

con.setAutoCommit(false);

Statement stmt = con.createStatement();

stmt.addBatch("INSERT INTO kurs VALUES ('Jarek', 'JS',
30)");

stmt.addBatch("INSERT INTO kurs VALUES ('Andrzej', 'AM',
27)");

stmt.addBatch(""INSERT INTO kurs VALUES ('Ania', 'AM',
20)");

// wykonaj paczkę

int[] updateCounts = stmt.executeBatch();

background image

slajd 8

© J.Rumiński

- obsługa znaczników – savepoint:

 

Statement stmt = conn.createStatement();

int rows = stmt.executeUpdate("INSERT INTO kurs VALUES ('Ania', 'AM',
20)");

// ustaw savepoint

Savepoint svpt1 = conn.setSavepoint("SAVEPOINT_1");

rows = stmt.executeUpdate("INSERT INTO kurs VALUES ('Jarek', 'JS', 30)");

(...)

//wycofaj efekt działania wszystkich wyrażeń SQL po znaczniku svpt1

conn.rollback(svpt1);

(...)

conn.commit();

background image

slajd 9

© J.Rumiński

- obsługa transakcji współbieżnych, poprzez określenie modelu

izolacji transakcji:

conn.SetTransactionIsolation(level), gdzie level to:

1. Connection.TRANSACTION_NONE — sterownik nie obsługuje

transakcji – nie jest zgodny z JDBC,

2. Connection.TRANSACTION_READ_UNCOMMITTED —

transakcje mają dostęp do niezatwierdzonych danych (nowe
lub zmienione dane, lecz nie zatwierdzone przez commit()).
Możliwe są zatem zjawiska niepożądane znane jako
niespójność odczytów, niepowtarzalność odczytów i odczyty
fantomowe,

background image

slajd 10

© J.Rumiński

3. Connection.TRANSACTION_READ_COMMITTED —
zmiany wprowadzone przez daną transakcję widoczne
dopiero po wywołaniu commit(). Możliwe są wciąż
zjawiska niepożądane jak niepowtarzalność odczytów i
odczyty fantomowe,

4. Connection.TRANSACTION_REPEATABLE_READ —
Możliwe są tylko odczyty fantomowe (np. jedna
transakcja dodaje wiersze druga aktualizuje – brak
aktualizacji dodawanych wierszy),

5. Connection.TRANSACTION_SERIALIZABLE —
niemożliwe są żadne powyższe zjawiska niepożądane.


Document Outline


Wyszukiwarka

Podobne podstrony:
wyklad bd jwr 7
wyklad bd jwr 4
wyklad bd jwr 1
wyklad bd jwr 5
wyklad bd jwr 3
wyklad bd jwr 7
http, www strefawiedzy edu pl file php file= 28 Wyklady BD prezentacja2
http, www strefawiedzy edu pl file php file= 28 Wyklady BD prezentacja6
transact sql, Analiza matematyczna, Analiza matematyczna, Analiza matematyczna cz2, BD wyklady, BD w
http, www strefawiedzy edu pl file php file= 28 Wyklady BD prezentacja4
http, www strefawiedzy edu pl file php file= 28 Wyklady BD prezentacja10
http, www strefawiedzy edu pl file php file= 28 Wyklady BD prezentacja9a
Ochrona integralności danych, Analiza matematyczna, Analiza matematyczna, Analiza matematyczna cz2,
http, www strefawiedzy edu pl file php file= 28 Wyklady BD prezentacja5
http, www strefawiedzy edu pl file php file= 28 Wyklady BD prezentacja11a

więcej podobnych podstron