INFO
Sylabus
Transakcje w bazach danych
1. Po co transakcje? - Współbieżność
2. Po co transakcje? - Przeciwdziałanie awariom
3. Transakcja: jednostka działalności systemu
4. Przykładowa transakcja
5. Kryterium poprawności transakcji
6. Implementacja szeregowalności poprzez zamki
7. Zakleszczenie
8. Walka z zakleszczeniem
9. Metody bez zakleszczeń oparte na stemplach czasowych
10. Metody optymistyczne
11. Ziarnistość mechanizmu transakcji
12. Zmienna ziarnistość
13. Typy awarii i reakcje na awarie
14. Odtwarzanie po awarii - środki, terminy
15. Odtwarzanie po zerwaniu
16. Podstawowe algorytmy z zamkami
17. Komendy w SQL do przetwarzania transakcji
18. Zagnieżdżone transakcje
19. Przykład zagnieżdżonej transakcji
20. 2PC w systemach rozproszonych
21. Długie transakcje (transakcje projektowe)
22. Podsumowanie
Skorowidz
Wyście:
Wyklad VI. Wprowadzenie do transakcji w bazach danych (KURS SSR)
I II III IV V VI VII VIII IX X XI XII XIII XIV
« poprzedni punkt   następny punkt »

11. Ziarnistość mechanizmu (granularity)

Pytanie: co ma być jednostką na którą zakłada się zamek, albo którą uważa się za atomowy obiekt na którym będzie trzymać się stemple, kopiować, odtwarzać, itd.
  • Baza danych?
  • Relacja (tablica, ekstensja klasy)?
  • Krotka (obiekt)?
  • Element krotki (wartość atrybutu, pod-obiekt)?
  •   . . .
  • A może fizyczna strona???

  • Grube ziarna (baza danych, relacja) (1kB) mały stopień współbieżności
    Miałkie ziarna (np. element krotki) (1kB) duża pracochłonność zakładania zamków, duże zapotrzebowanie na dodatkową pamięć na zamki, przeciążenie sieci

    Na dodatek, to trzeba zgrać z innymi mechanizmami, np. buforowaniem w RAM.

    Testy dla systemów relacyjnych pokazują, że optymalną ziarnistość zapewnia fizyczna strona.

    Jest to wynik przykry (i tendencyjny), ponieważ uniemożliwia bardziej “inteligentne” mechanizmy przetwarzania transakcji, takie, które ‘rozumieją” semantykę tego, co blokują (np. predicate locking).


    12. Zmienna ziarnistość (variable granularity)

    Pomysł (Gray, 1977) polega na tym, aby obiekty do blokowania organizować hierarchicznie i blokować w nich tyle, ile trzeba. Pomysł bardzo dobry dla obiektowych baz danych.