To-fase-låsningRediger

I henhold til to-fase-låsningsprotokollen håndterer en transaktion sine låse i to forskellige, på hinanden følgende faser under transaktionens udførelse:

  1. Ekspanderende fase (også kendt som voksende fase): Der erhverves låse, og ingen låse frigives (antallet af låse kan kun øges).
  2. Shrinking phase (aka Contracting phase): låse frigives, og der erhverves ingen låse.

Låsningsreglerne for to faser kan sammenfattes som: erhverv aldrig en lås, efter at en lås er blevet frigivet. Serialiserbarhedsegenskaben er garanteret for en tidsplan med transaktioner, der adlyder denne regel.

Typisk, uden eksplicit viden i en transaktion om afslutningen af fase 1, bestemmes det sikkert først, når en transaktion har afsluttet behandlingen og anmodet om commit. I dette tilfælde kan alle låsene frigives på én gang (fase 2).

Konservativ tofaselåsningRediger

Skellen mellem 2PL og C2PL er, at C2PL’s transaktioner får alle de låse, de har brug for, før transaktionerne begynder. Dette er for at sikre, at en transaktion, der allerede har nogle låse, ikke blokerer, mens den venter på andre låse. Konservativ 2PL forhindrer deadlocks.

Strenge tofaselåsningRediger

For at overholde S2PL-protokollen skal en transaktion overholde 2PL og først frigive sine skrive- (eksklusive) låse, når den er afsluttet, dvs. når den enten er blevet begået eller afbrudt. På den anden side frigives læselåse (delte) låse regelmæssigt i løbet af fase 2. Denne protokol er ikke hensigtsmæssig i B-træer, fordi den forårsager flaskehals (mens B-træer altid begynder at søge fra den overordnede rod).

Strong strict two-phase lockingRediger

Strikt strenghed, eller streng planlægning, eller streng tofaselåsning

For at overholde strong strict two-phase locking (SS2PL) frigiver låseprotokollen både skrive- (eksklusive) og læse- (delte) låse, der anvendes af en transaktion, først efter at transaktionen er afsluttet, dvs, dvs. først efter at den både er færdig med at udføre (er klar) og enten er blevet begået eller afbrudt. Denne protokol er også i overensstemmelse med S2PL-reglerne. En transaktion, der overholder SS2PL, kan betragtes som en transaktion, der har fase 1, der varer hele transaktionens udførelsestid, og ingen fase 2 (eller en degenereret fase 2). Der er således faktisk kun én fase tilbage, og “to-fase” i navnet synes stadig at blive anvendt på grund af den historiske udvikling af begrebet fra 2PL, og fordi 2PL er en superklasse. SS2PL-egenskaben for et skema kaldes også Rigorøsitet. Det er også navnet på den klasse af skemaer, der har denne egenskab, og et SS2PL-skema kaldes også et “rigorøst skema”. Udtrykket “Rigorøsitet” er fri for den unødvendige arv af “tofaset”, ligesom det er uafhængigt af enhver (spærre)mekanisme (i princippet kan andre spærremekanismer anvendes). Ejendommens respektive låsemekanisme omtales undertiden som Rigorøs 2PL.

SS2PL er et specialtilfælde af S2PL, dvs. SS2PL-klassen af skemaer er en egentlig underklasse af S2PL (ethvert SS2PL-skema er også et S2PL-skema, men der findes S2PL-skemaer, som ikke er SS2PL).

SS2PL har været den foretrukne protokol for samtidighedskontrol i de fleste databasesystemer og er blevet anvendt siden deres tidlige dage i 1970’erne. Den har vist sig at være en effektiv mekanisme i mange situationer og giver ud over Serializability også Strictness (et særligt tilfælde af cascadeless Recoverability), som er afgørende for effektiv database recovery, og også Commitment ordering (CO) for deltagelse i distribuerede miljøer, hvor der anvendes en CO-baseret distribueret serialiserbarhed og globale serialiserbarhedsløsninger. Da det er en delmængde af CO, findes der en effektiv gennemførelse af distribueret SS2PL uden en distribueret låsemanager (DLM), mens distribuerede deadlocks (se nedenfor) opløses automatisk. Det faktum, at SS2PL, der anvendes i multi-databasesystemer, sikrer global serialiserbarhed, har været kendt i årevis før opdagelsen af CO, men først med CO kom forståelsen af den rolle, som en atomar forpligtelsesprotokol spiller for opretholdelsen af global serialiserbarhed, samt observationen af automatisk opløsning af distribuerede deadlocks (se et detaljeret eksempel på distribueret SS2PL). Faktisk er det mere betydningsfuldt for SS2PL at arve egenskaberne Recoverability og CO end at være en delmængde af 2PL, som i sig selv i sin generelle form, ud over at omfatte en simpel serialiserbarhedsmekanisme (serialiserbarhed er dog også impliceret af CO), ikke vides at give SS2PL andre vigtige kvaliteter. 2PL i sin generelle form, såvel som når den kombineres med Strictness, dvs. Strict 2PL (S2PL), vides ikke at blive anvendt i praksis. Den populære SS2PL kræver ikke markering af “afslutning af fase 1”, som 2PL og S2PL gør, og er derfor enklere at gennemføre. I modsætning til den generelle 2PL giver SS2PL som nævnt ovenfor også de nyttige egenskaber Strictness og Commitment ordering properties.

Der findes mange varianter af SS2PL, som anvender forskellige låsetyper med forskellig semantik i forskellige situationer, herunder tilfælde af ændring af låsetype under en transaktion. Bemærkelsesværdige er varianter, der anvender Multiple granularity locking.

  1. SS2PL vs. S2PL: Begge giver Serializability og Strictness. Da S2PL er en overklasse af SS2PL, kan den i princippet give mere samtidighed. Der bemærkes dog typisk ingen samtidighedsfordel i praksis (der findes nøjagtig samme låsning for begge, med praktisk talt ikke meget tidligere frigivelse af låsning for S2PL), og det er ikke berettiget, at der er overhead forbundet med at håndtere en mekanisme til afslutning af fase 1 i S2PL, der er adskilt fra transaktionens afslutning. Mens SS2PL også giver mulighed for Commitment ordering, gør S2PL det ikke. Dette forklarer, hvorfor SS2PL foretrækkes frem for S2PL.
  2. Særligt før 1990, men også efter, er udtrykket “Strict 2PL” (S2PL) i mange artikler og bøger, f.eks. i (Bernstein et al. 1987, s. 59), ofte blevet defineret ved låseprotokollen “Release all locks only after transaction end”, som er protokollen for SS2PL. Således kunne “Strict 2PL” ikke være der navnet på skæringspunktet mellem Strictness og 2PL, som er større end den klasse, der genereres af SS2PL-protokollen. Dette har skabt forvirring. Med en eksplicit definition af S2PL som skæringspunktet mellem Strictness og 2PL, et nyt navn for SS2PL og en eksplicit skelnen mellem klasserne S2PL og SS2PL har artiklerne (Breitbart et al. 1991) og (Raz 1992) haft til hensigt at rydde op i forvirringen: den første bruger navnet “rigorousness” og den anden “SS2PL”.”
  3. Der findes en mere generel egenskab end SS2PL (en superklasse for skemaer), Strict commitment ordering (Strict CO, eller SCO), som også giver både serialiserbarhed, strenghed og CO, og som har et lignende låseoverhead. I modsætning til SS2PL blokerer SCO ikke ved en læse-skrive-konflikt (en læselås blokerer ikke for erhvervelse af en skrivelås; både SCO og SS2PL har samme adfærd ved skrive-læse- og skrive-skrive-konflikter) på bekostning af en mulig forsinket commit, og ved en sådan konflikttype har SCO en kortere gennemsnitlig transaktionsafslutningstid og bedre ydeevne end SS2PL. Mens SS2PL overholder ovenstående låsekompatibilitetstabel, har SCO følgende tabel:
write-lock

Låsekompatibilitet for SCO
Låstype læse-lås skrive-lås
læse-lock
X X

Bemærk, at selv om SCO frigiver alle låse ved transaktionens afslutning og overholder 2PL-låsningsreglerne, SCO ikke er en delmængde af 2PL på grund af dens anderledes låsekompatibilitetstabel. SCO tillader materialiserede læse- og skrivekonflikter mellem to transaktioner i deres fase 1, hvilket 2PL ikke tillader i fase 1 (se om materialiserede konflikter i Serializability). På den anden side tillader 2PL andre materialiserede konflikttyper i fase 2, som SCO slet ikke tillader. Tilsammen betyder dette, at tidsplanklasserne 2PL og SCO er usammenlignelige (dvs. at ingen klasse indeholder den anden klasse).

Resumé – Relationer mellem klasserRediger

Skema-klasser indeholder: En pil fra klasse A til klasse B angiver, at klasse A strengt indeholder B; mangel på en rettet sti mellem klasserne betyder, at klasserne ikke kan sammenlignes. En egenskab er i sagens natur blokerende, hvis den kun kan håndhæves ved at blokere transaktionens dataadgangsoperationer, indtil visse begivenheder indtræffer i andre transaktioner. (Raz 1992)

Mellem to skemaklasser (defineret ved deres skemaers respektive egenskaber), der har fælles skemaer, indeholder enten den ene den anden (indeholder strengt set den anden, hvis de ikke er lige store), eller også er de usammenlignelige. Indholdsrelationerne mellem 2PL-klasserne og andre større klasser af tidsplaner er opsummeret i følgende diagram. 2PL og dens underklasser er i sagens natur blokerende, hvilket betyder, at der ikke findes nogen optimistiske implementeringer for dem (og når “Optimistisk 2PL” nævnes, refererer det til en anden mekanisme med en klasse, der også omfatter tidsplaner, der ikke er i 2PL-klassen).

Articles

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.