WSPÓŁBIEŻNOŚĆ

Kursy Online SQL Server Bazy Danych Microsotf Współbieżność Poziomy Izolacji Transakcji Read Uncommitted Committed Repeatable Serializable Snapshot Andrzej Śmigielski

WSPÓŁBIEŻNOŚĆ

 
          Zwana inaczej dostępem współdzielonym lub wielodostępem sieciowym – jest to jednoczesne przetwarzanie dzielonych zasobów przez więcej niż jeden proces.
 

Przy tego typu przetwarzaniu danych może dochodzić do wielu problemów:

● Wycofanej modyfikacji (dirty reads)
Dotyczy odczytu danych zmodyfikowanych przez innego użytkownika, które zostaną ponownie zmodyfikowane.
● Utraconej modyfikacji (lost updates)
Dotyczy modyfikacji danych, a następnie nadpisywania tych samych danych przez innego użytkownika.
● Niepowtarzalnego odczytu (non-repeatable reads)
Dotyczy kilkukrotnego odczytu tych samych zatwierdzonych danych, ale za każdym razem te dane są inne.
● Fantomowego odczytu (phantoms)
Dotyczy wierszy dodanych, które wcześniej w transakcji nie były dostępne, a następnie się pojawią.
 
 

BLOKOWANIE

 
          SZBD zapewnia kontrolę współbieżności poprzez odpowiednie szeregowanie transakcji, czyli harmonogramowanie w taki sposób, aby były one wykonywane wydajnie i nie zaburzały spójności bazy.
Podstawową techniką, która jest wykorzystywana do tego celu, jest BLOKOWANIE na jednym z poziomów:
na poziomie wiersza
na poziomie strony
na poziomie tabeli
na poziomie zakresu.
 

Rozróżniamy dwa podstawowe rodzaje blokad:

● blokada do odczytu (blokada dzielona)
proces uzyskuje dostęp do danych tylko z możliwością ich odczytu, nie może natomiast wprowadzać żadnych zmian
● blokada do zapisu (blokada wyłączna)
proces uzyskuje wyłączną możliwość odczytu i zapisu danych. Żaden inny proces nie może się do niego dostać.
 
 

POZIOMY IZOLACJI

 
          Ms SQL Server daje możliwość zmiany poziomów izolacji transakcji. Wpływają one na sposób blokowania danych.

● READ UNCOMMITTED
Transakcja Tran1 może odczytywać dane modyfikowane przez Tran2 jeszcze przed ich zatwierdzeniem.
Przetwarzanie tego typu jest stosunkowo szybkie, ale mogą wystąpić problemy utraconej modyfikacji lub wycofanej modyfikacji.

● READ COMMITTED
Jest to ustawienie domyślne Ms SQL Server’a.
Wprowadzane modyfikacje w transakcji Tran1 zakładają blokadę, która uniemożliwia przeglądanie danych w transakcji Tran2 do momentu zakończenia transakcji Tran1. Zapobiega to problemowi niepowtarzalnego odczytu.

● REPEATABLE READ
Transakcja Tran1 w czasie odczytu danych zakłada blokadę i utrzymuje ją do zakończenia transakcji.
Opcja ta zapobiega wprowadzaniu zmian danych przez inne transakcje.
Dzięki temu kilkakrotny odczyt daje takie same wyniki, natomiast do tabeli można dodawać i usuwać wiersze.

● SERIALIZABLE
Jest to najbardziej restrykcyjna opcja, która zakłada blokadę na cały zestaw wierszy.
Do czasu zakończenia transakcji Tran1 nie można: ani modyfikować, ani dodawać, ani usuwać żadnych danych.
Ten poziom izolacji zapewnia całkowitą bezbłędność współbieżnego działania transakcji, ale niestety wiąże się z obniżeniem wydajności przetwarzania danych.

● SNAPSHOT
Opcja ta zapisuje tzw. „migawki” danych, których transakcja będzie używała w kolejnych odniesieniach.
Chroni ona przed wszystkimi wspomnianymi wcześniej konfliktami.
Mechanizm ten działa na zasadzie wersjonowania wierszy.
 
 

SPOSÓB OBSŁUGI BLOKAD

 
1). Każda transakcja chcąc uzyskać dostęp do określonych danych, musi je najpierw zablokować do odczytu lub do zapisu.
2). SZBD sprawdza, czy dany element jest już zwolniony przez inną transakcję, i jeśli tak, to nowa transakcja może uzyskać blokadę, natomiast jeżeli nie, to musi zaczekać na odblokowanie zasobu.
3). Transakcja trzyma blokadę do chwili zakończenia transakcji.
 
 

PLIKI DO ŚCIĄGNIĘCIA:

1. 005_Wspolbieznosc.sql
 

KURSY SQL ONLINE