1 / 32

Transakcje

Transakcje. Wykład 11 Prowadzący: dr Paweł Drozda. Algorytmy zarządzania współbieżnym wykonaniem transakcji. blokowanie - uszeregowanie transakcji wynika z kolejności uzyskiwanych blokad znaczników czasowych – uszeregowanie wynika z wartości znaczników czasowych związanych z transakcjami

Download Presentation

Transakcje

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Transakcje Wykład 11 Prowadzący: dr Paweł Drozda

  2. Algorytmy zarządzania współbieżnym wykonaniem transakcji • blokowanie - uszeregowanie transakcji wynika z kolejności uzyskiwanych blokad • znaczników czasowych – uszeregowanie wynika z wartości znaczników czasowych związanych z transakcjami • optymistyczne – walidacja poprawności uszeregowania dr Paweł Drozda

  3. Metody znaczników czasowych (1) • znacznik czasowy (TS) – unikalny identyfikator wyznaczający kolejność transakcji (wg kolejności uruchomienia) • generowane przez zegar bądź przez licznik (poprzez zwiększenie o jeden) • znaczniki czasowe jednostek danych: • ReadTS(x) – znacznik ostatniej transakcji czytającej x • WriteTS(x) – znacznik ostatniej transakcji piszącej do x dr Paweł Drozda

  4. Metody znaczników czasowych (2) • Algorytm • T chce odczytać x • jeśli TS(T) < WriteTS(x), to T wycofywana i restartowana z nowym TS(T) • gdy TS(T) >= WriteTS(x), to T czyta x; wartość ReadTS(x)= max(TS(T),ReadTS(x)) • T chce pisać do x • jeśli TS(T) < WriteTS(x) lub TS(T) < ReadTS(x), to T wycofywana i restartowana z nowym TS(T) • wpp T pisze do x; WriteTS(x)=TS(T) dr Paweł Drozda

  5. Metody znaczników czasowych (3) • Zasada zapisu Thomasa (modyfikacja podstawowej metody) • T chce pisać do x • jeśli TS(T) < WriteTS(x) – można pominąć operację zapisu do x (wartość jest przestarzała – później uruchomiona transakcja zmodyfikowała tą wartość) • pozostałe przypadki bez zmian • zapewnia szerszy wielodostęp • nie odrzuca transakcji z niepotrzebnymi zapisami (tylko nie dokonuje zapisu) dr Paweł Drozda

  6. Metoda znaczników czasowych – przykład (1) T1 T2 T3 start r(x) x=x+10 w(x) t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 start r(y) y=y+20 w(y)  start start r(y) y=y+30 w(y) dr Paweł Drozda

  7. Metoda znaczników czasowych – przykład (2) T1 T2 T3 t12 t12 t14 t15 t16 t17 t18 t19 z=50 w(z)  commit z=100 w(z) commit r(y) y=y+20 w(y) commit dr Paweł Drozda

  8. Podstawowa metoda znaczników czasowych - cechy • gwarantuje szeregowalność transakcji - transakcje wykonywane według znaczników czasowych • nie gwarantuje odtwarzalności harmonogramu przykład: H1= w1(x)r2(x)w2(x)c2a1, gdzie TS(T1)< TS(T2) dr Paweł Drozda

  9. Modyfikacja metody • Zapewnienie odtwarzalności – konieczna modyfikacja metody • główna idea – buforowanie operacji odczytu i zapisu aż do momentu zatwierdzenia transakcji • T1 zapisuje x: WriteTS(x) – aktualizowany, x – zmieniony dopiero po zatwierdzeniu transakcji T1 • T2 odczytuje daną x zaktualizowaną przez T1: gdy warunek odczytu jest spełniony to odczyt odsunięty do momentu zatwierdzenia T1 dr Paweł Drozda

  10. Algorytmy optymistyczne (1) • Trzy stany: • Faza odczytu – modyfikacje przechowywane w obszarach roboczych transakcji • Faza walidacji – badanie uszeregowalności transakcji; transakcje niespełniające uszeregowalności wycofywane i restartowane • Faza zapisu – po pomyślnej walidacji modyfikacje wprowadzane do bazy dr Paweł Drozda

  11. Algorytmy optymistyczne (2) • Faza walidacji – określa czy transakcje mogą spowodować kolizję • znaczniki czasowe dla transakcji: • start(T) – rozpoczęcie transakcji • validation(T) – rozpoczęcie walidacji • finish(T) – po zakończeniu transakcji • walidacja pomyślna gdy: • finish(S)<start(T) – sekwencyjnie lub: • jeśli start(T)<finish(S) to: • dane zapisywane przez wcześniejszą transakcję nie mogą zawierać danych zapisywanych przez bieżącą transakcję • finish(S)<validation(T) dr Paweł Drozda

  12. Algorytmy optymistyczne (3) • efektywne – gdy konflikty rzadkie • gdy wycofania częste – algorytm nieefektywny • szerszy wielodostęp w porównaniu do blokowania dr Paweł Drozda

  13. Ziarnistość danych (1) • założenie algorytmów – dostęp transakcji do pewnej jednostki danych • Elementy bazy danych (ziarnistość): • cała baza • plik • strona (sektor na dysku) • rekord • wartość w polu rekordu dr Paweł Drozda

  14. Ziarnistość (2) - blokady • Ziarnistość dla blokowania: • czy blokować całą bazę – czy poszczególne pola rekordów? • im większa część blokowana – większe prawdopodobieństwo zakleszczenia, węższy wielodostęp • większa część bazy modyfikowana – szybsze blokowanie całej bazy niż poszczególnych rekordów • wybór w zależności od transakcji dr Paweł Drozda

  15. Hierarchia jednostek blokowania Baza danych Poziom 0 Plik3 Plik1 Plik2 Poziom 1 Strona2 Strona3 Strona1 Poziom 2 Rekord1 Rekord2 Poziom 3 Pole1 Pole2 Poziom 4 dr Paweł Drozda

  16. Ziarnistość - blokowanie • zablokowany węzeł  zablokowane następniki (gdy zablokowany rekord1 zablokowane również pole1, pole2) • żądanie zablokowania węzła – konieczne sprawdzenie czy któryś z następników nie został zablokowany • efektywne przeszukanie następników – blokowanie jednostek hierarchicznych dr Paweł Drozda

  17. Blokowanie jednostek hierarchicznych • blokada intencjonalna – blokada zakładana na każdy węzeł nadrzędny np. przy blokowaniu Strona1 blokada intencjonalna założona na Plik2, baza danych • typy blokad intencjonalnych intencjonalna do odczytu IR intencjonalna do zapisu IW wszystkie elementy do odczytu i intencjonalna do zapisu RIW dr Paweł Drozda

  18. Kompatybilność blokad dr Paweł Drozda

  19. Szeregowalność blokowania hierarchicznego • warunki szeregowalności: • transakcja nie może blokować, jeśli coś odblokowała • transakcji nie wolno zablokować węzła, jeśli nie zablokuje jego bezpośredniego poprzednika blokadą intencjonalną • przed odblokowaniem węzła muszą zostać odblokowani wszyscy poprzenicy • zakleszczenia obsługiwane jak wcześniej dr Paweł Drozda

  20. Poziomy izolacji (1) • Większość SZBD nie zapewnia szeregowalności transakcji • Poziom izolacji wprowadzany do znalezienia kompromisu pomiędzy współbieżnością a poprawnością wykonania transakcji • Możliwe poziomy izolacji: • READ UNCOMMITTED • READ COMMITED • REPEATABLE READ • SERIALIZABLE dr Paweł Drozda

  21. Poziomy izolacji (2) • SERIALIZABLE • Odczytuje wyłącznie dane zatwierdzone • Do momentu zakończenia transakcji żadna dana nie zostanie zmieniona przez inną transakcje • Blokuje dostęp do tabeli • Zapewnia szeregowalność • REPEATABLE READ • Tak samo jak SERIALIZABLE – tylko, że blokuje dostęp do danych a nie całej tabeli • Pojawia się problem „fantomów” – gdy jedna transakcja czyta dane, druga w tym samym czasie dodaje lub uaktualnia dr Paweł Drozda

  22. Poziomy izolacji (3) • READ COMMITTED • Odczytuje tylko zatwierdzone dane • Zapisane dane nie zostaną zmienione przez inną transakcję do momentu zakończenia transakcji • Brak gwarancji, że dane odczytane nie zostaną zmienione przez inną transakcję • Problem niepowtarzalnego odczytu – gdy ta sama dana jest czytana dwa razy a w międzyczasie inna transakcja ją modyfikuje dr Paweł Drozda

  23. Poziomy izolacji (4) • READ UNCOMMITTED • Dopuszczenie odczytywania danych, które zostały zmienione przez niezatwierdzone transakcje – może czytać dodane wiersze które później będą wycofane (Czytanie na brudno) • Najniższy poziom izolacji • Poziom izolacji SQL – ustawiany przed uruchomieniem transakcji SET TRANSACTION ISOLATION LEVEL (SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED) dr Paweł Drozda

  24. Poziomy izolacji - zestawienie dr Paweł Drozda

  25. Transakcje – SQL (1) • Dostępne dla parametru engine ustawionego na InnoDB (podobnie jak przy wymuszaniu więzów integralności referencyjnej) CREATE TABLE Studenci(…) engine=InnoDB; • Dwa tryby pracy z transakcjami • autocommit – każda operacja od razu zatwierdzana (chyba, że się zaznaczy transakcje) • Bez autocommit – możliwość grupowania poleceń w transakcję (konieczność potwierdzania commit lub wycofania rollback) dr Paweł Drozda

  26. Transakcje – SQL (2) • Ustawienie autocommit: • SET AUTOCOMMIT =1; - domyślnie • SET AUTOCOMMIT =0; - możliwość grupowania instrukcji w transakcje • Zmiana ustawienia na stałe: • Zapis w pliku my.ini lub my.cnf w sekcji [mysqld] init_connect=‘SET AUTOCOMMIT=0’ • Sprawdzenie ustawienia trybu autocommit: • SELECT @@AUTOCOMMIT; dr Paweł Drozda

  27. Transakcje SQL (3) • Polecenia: • START TRANSACTION – rozpoczyna transakcje • AUTOCOMMIT=0 – START TRANSACTION niepotrzebne – uruchamiane automatycznie • AUTOCOMMIT=1 – START TRANSACTION uruchamia transakcje, COMMIT lub ROLLBACK kończy blok transakcji • COMMIT – zatwierdza wykonanie transakcji • ROLLBACK – wycofuje transakcje dr Paweł Drozda

  28. Transakcja przykład Student(id,nazwisko,rok) SET AUTOCOMMIT=0; UPDATE Student set rok=rok+1; INSERT INTO Student VALUES(123,’Nowak’,3); EXIT; - zmiany niezachowane COMMIT; EXIT; - zmiany zachowane SET AUTOCOMMIT=1; UPDATE Student set rok=rok+1; START TRANSACTION; INSERT INTO Student VALUES(123,’Nowak’,3); ROLLBACK; insert niezachowany, update zachowany dr Paweł Drozda

  29. Transakcje SQL (4) • Blokowanie wierszy dla InnoDB: • Blokowanie do aktualizacji: • SELECT … FROM … WHERE … FOR UPDATE; • Blokowanie do czytania: • SELECT … FROM … WHERE … LOCK IN SHARE MODE; dr Paweł Drozda

  30. Transakcje - przykład AUTOCOMMIT=1; BEGIN TRANSACTION; SELECT rok FROM Student FOR UPDATE; UPDATE Student SET rok=rok+1; COMMIT; AUTOCOMMIT=1; BEGIN TRANSACTION; SELECT * FROM Student WHERE nazwisko=‘kowal’ LOCK IN SHARE MODE; INSERT INTO Oceny VALUES(1,2,4); COMMIT; dr Paweł Drozda

  31. Transakcje SQL (5) • Blokowanie tabel – dla parametru engine ustawionego na MyISAM – domyślnie • Polecenia: • LOCK TABLES tabela1 typBlokady, …; • typBlokady = READ|WRITE • UNLOCK TABLES; - odblokowuje dostęp do tabel dr Paweł Drozda

  32. Transakcje – przykład Sesja1 sesja2 LOCK TABLES Student READ, Oceny WRITE; SELECT * FROM Student; - zostanie wykonana SELECT * FROM Oceny; - czeka na odblokowanie tabeli Oceny UNLOCK TABLES; wykonanie zapytania dr Paweł Drozda

More Related