Gelijktijdigheidscontrole in databasemanagementsystemen: vergrendelings- en tijdstempelgebaseerde protocollen
โก Slimme samenvatting
Concurrency Control in DBMS beheert gelijktijdige transacties zodat ze correct worden uitgevoerd zonder de data-integriteit te schenden. Het voorkomt anomalieรซn zoals verloren updates en onjuiste leesbewerkingen door gebruik te maken van op vergrendelingen gebaseerde, tweefasen-, tijdstempel- en validatieprotocollen die serialiseerbare resultaten garanderen.

Wat is gelijktijdigheidscontrole?
Gelijktijdigheidscontrole In een databasemanagementsysteem is een procedure voor het beheren van gelijktijdige bewerkingen zonder dat deze elkaar conflicteren. Het zorgt ervoor dat databasetransacties gelijktijdig en nauwkeurig worden uitgevoerd om correcte resultaten te produceren zonder de data-integriteit van de betreffende database te schenden.
Gelijktijdige toegang is vrij eenvoudig als alle gebruikers alleen maar gegevens lezen, omdat ze elkaar dan niet kunnen beรฏnvloeden. In de praktijk bevat elke database echter een mix van lees- en schrijfbewerkingen, waardoor gelijktijdige toegang een uitdaging wordt.
Gelijktijdigheidscontrole in databasemanagementsystemen (DBMS) wordt gebruikt om dergelijke conflicten aan te pakken, die zich vooral voordoen in systemen met meerdere gebruikers. Gelijktijdigheidscontrole is daarom een โโvan de belangrijkste elementen voor de goede werking van een database waar twee of meer transacties gelijktijdig worden uitgevoerd en toegang tot dezelfde gegevens vereisen. Het werkt hand in hand met transactiebeheer, wat de werkeenheden definieert die de gelijktijdigheidscontrole veilig moet kunnen afwisselen.
Mogelijke problemen van gelijktijdigheid
Hieronder volgen enkele problemen die u waarschijnlijk zult tegenkomen zonder adequate controle over gelijktijdige toegang tot uw databasesysteem:
- Verloren updates Dit gebeurt wanneer meerdere transacties dezelfde rij selecteren en deze bijwerken op basis van de geselecteerde waarde.
- Niet-vastgelegde afhankelijkheid (Dirty read) treedt op wanneer een tweede transactie een rij selecteert die is bijgewerkt door een andere transactie die nog niet is voltooid.
- Niet-herhaalbaar lezen Dit gebeurt wanneer een tweede transactie meerdere keren dezelfde rij benadert en elke keer andere gegevens leest.
- Onjuiste samenvatting Dit probleem treedt op wanneer een transactie een samenvatting maakt van de waarde van alle instanties van een herhaald gegevenselement, terwijl een tweede transactie een paar van die instanties bijwerkt. De resulterende samenvatting geeft geen correct resultaat weer.
Waarom een โโgelijktijdige methode gebruiken?
Redenen voor het gebruik van een methode voor gelijktijdigheidsbeheer in een DBMS:
- Het doel is om isolatie door middel van wederzijdse uitsluiting toe te passen tussen conflicterende transacties.
- Om conflicten tussen lees- en schrijfbewerkingen en schrijf-schrijfbewerkingen op te lossen.
- Om de consistentie van de database te waarborgen door voortdurend uitvoeringsbeperkingen af โโte dwingen.
- Om de interactie tussen gelijktijdige transacties te beheersen, wordt gebruikgemaakt van schema's voor gelijktijdigheidscontrole.
- Om serialiseerbaarheid te garanderen.
Voorbeeld
Stel dat twee mensen tegelijkertijd naar een elektronische kiosk gaan om een โโfilmkaartje te kopen voor dezelfde film en hetzelfde aanvangstijdstip.
Er is echter nog maar รฉรฉn stoel vrij voor die voorstelling in de bioscoop. Zonder gelijktijdigheidscontrole is het mogelijk dat beide bioscoopbezoekers een kaartje kopen. Gelijktijdigheidscontrole voorkomt dit. Beide bioscoopbezoekers hebben nog steeds toegang tot de informatie in de database met zaalreserveringen, maar gelijktijdigheidscontrole geeft alleen een kaartje aan de koper die de transactie als eerste voltooit.
Protocollen voor gelijktijdigheidscontrole
Verschillende protocollen voor gelijktijdigheidsbeheer bieden verschillende afwegingen tussen de mate van gelijktijdigheid die ze toestaan โโen de overhead die ze met zich meebrengen. De belangrijkste technieken voor gelijktijdigheidsbeheer in DBMS zijn:
- Op slot gebaseerde protocollen
- Tweefasenvergrendelingsprotocol
- Op tijdstempels gebaseerde protocollen
- Op validatie gebaseerde protocollen
Ze worden hieronder รฉรฉn voor รฉรฉn besproken, te beginnen met de meest gebruikte, op sloten gebaseerde protocollen.
Op slot gebaseerde protocollen
Op vergrendelingen gebaseerde protocollen In databasemanagementsystemen (DBMS) zijn vergrendelingen een mechanisme waarbij een transactie een gegevenselement niet kan lezen of schrijven totdat deze een geschikte vergrendeling heeft verkregen. Op vergrendelingen gebaseerde protocollen helpen het gelijktijdigheidsprobleem op te lossen door een specifiek gegevenselement te vergrendelen of te isoleren voor รฉรฉn enkele transactie.
Een vergrendeling is een datavariabele die is gekoppeld aan een data-item en aangeeft welke bewerkingen erop kunnen worden uitgevoerd. Vergrendelingen helpen bij het synchroniseren van de toegang tot database-items door gelijktijdige transacties. Alle vergrendelingsverzoeken worden gedaan aan de concurrency-control manager en transacties worden pas uitgevoerd nadat het vergrendelingsverzoek is goedgekeurd.
Binaire sloten: Een binaire vergrendeling op een gegevenselement kan zich in een vergrendelde of een ontgrendelde toestand bevinden.
Gedeeld/Exclusief: Dit vergrendelingsmechanisme scheidt vergrendelingen op basis van hun gebruik. Als een vergrendeling wordt verkregen om een โโschrijfbewerking uit te voeren, wordt dit een exclusieve vergrendeling genoemd.
1. Gedeeld slot (S): Een gedeeld slot wordt ook wel een alleen-lezen slot genoemd. Met een gedeeld slot kan het gegevenselement worden gedeeld tussen transacties, omdat geen van beide transacties toestemming heeft om het element bij te werken. Als bijvoorbeeld twee transacties het rekeningsaldo van een persoon lezen, dan kan het gegevenselement gedeeld worden tussen transacties. databank Hiermee kunnen ze lezen door een gedeeld slot te plaatsen. Als een andere transactie dat saldo wil bijwerken, voorkomt het gedeelde slot dit totdat het lezen is voltooid.
2. Exclusief slot (X): Met een exclusieve vergrendeling kan een gegevenselement zowel gelezen als geschreven worden. Deze vergrendeling is exclusief en kan niet gelijktijdig op hetzelfde gegevenselement worden toegepast. Een X-vergrendeling wordt aangevraagd met de instructie lock-x. Wanneer bijvoorbeeld een transactie een rekeningsaldo moet bijwerken, wordt dit toegestaan โโdoor een X-vergrendeling te plaatsen; een tweede transactie die wil lezen of schrijven, wordt dan geblokkeerd.
3. Vereenvoudigd vergrendelingsprotocol: Dit maakt het mogelijk voor transacties om een โโvergrendeling op elk object te verkrijgen voordat een bewerking begint. Transacties kunnen het gegevenselement ontgrendelen nadat de schrijfbewerking is voltooid.
4. Vooraf vergrendelen: Dit protocol evalueert bewerkingen en genereert een lijst met de gegevenselementen die nodig zijn om de uitvoering te starten. Wanneer alle vergrendelingen zijn verleend, wordt de transactie uitgevoerd en worden alle vergrendelingen vrijgegeven zodra de bewerkingen zijn voltooid.
honger: Uithongering treedt op wanneer een transactie voor onbepaalde tijd moet wachten om een โโvergrendeling te verkrijgen. Redenen hiervoor zijn onder andere een slecht beheerd wachtschema voor vergrendelde items, een resourcelek of het feit dat dezelfde transactie herhaaldelijk als slachtoffer wordt geselecteerd.
Impasse: Een deadlock verwijst naar een situatie waarin twee of meer processen op elkaar wachten om een โโbron vrij te geven, waardoor een vicieuze cirkel ontstaat.
Tweefasenvergrendelingsprotocol (2PL)
De Tweefasenvergrendelingsprotocol2PL, ook wel bekend als gelijktijdigheidscontrole, is een methode voor het beheersen van gelijktijdigheid die serialiseerbaarheid garandeert door een vergrendeling toe te passen op transactiegegevens, waardoor andere transacties geen gelijktijdige toegang tot dezelfde gegevens krijgen.
Het Two-Phase Locking-protocol maakt het mogelijk dat elke transactie in twee stappen een vergrendelings- of ontgrendelingsverzoek indient:
- Groeifase: In deze fase kan een transactie vergrendelingen verkrijgen, maar geen vergrendelingen vrijgeven.
- Krimpfase: In deze fase kan een transactie vergrendelingen opheffen, maar geen nieuwe vergrendelingen verkrijgen.
Het klopt dat 2PL serialiseerbaarheid biedt. Dit garandeert echter niet dat er geen deadlocks kunnen optreden. In het bovenstaande diagram zoeken lokale en globale deadlockdetectoren naar deadlocks en lossen deze op door transacties terug te zetten naar hun beginstatus.
Strikte tweefasige vergrendelingsmethode
Strict 2PL is vrijwel hetzelfde als 2PL. Het enige verschil is dat Strict-2PL een vergrendeling nooit vrijgeeft nadat deze is gebruikt. Het houdt alle vergrendelingen vast tot het commit-punt en geeft ze allemaal tegelijk vrij wanneer het proces is voltooid.
Gecentraliseerde 2PL
Bij gecentraliseerde 2PL is รฉรฉn locatie verantwoordelijk voor het lockmanagementproces. Deze locatie heeft slechts รฉรฉn lockmanager voor het gehele DBMS.
Primaire kopie 2PL
Bij het Primary Copy 2PL-mechanisme worden meerdere lockmanagers over verschillende locaties verdeeld, waarbij รฉรฉn lockmanager verantwoordelijk is voor het beheren van de lock voor een set data-items. Wanneer de primaire kopie wordt bijgewerkt, wordt de wijziging doorgegeven aan de slaves.
Gedistribueerde 2PL
Bij dit mechanisme worden lock managers over alle locaties verdeeld en zijn zij verantwoordelijk voor het beheren van de vergrendelingen voor de data op die locatie. Als er geen data gerepliceerd wordt, is dit equivalent aan Primary Copy 2PL. De communicatiekosten van Distributed 2PL liggen aanzienlijk hoger dan die van Primary Copy 2PL.
Op tijdstempels gebaseerde protocollen
De Tijdstempelgebaseerd protocol In een DBMS is dit een algoritme dat de systeemtijd of een logische teller als tijdstempel gebruikt om de uitvoering van gelijktijdige transacties te serialiseren. Het zorgt ervoor dat elke conflicterende lees- en schrijfbewerking in de juiste tijdstempelvolgorde wordt uitgevoerd.
Bij deze methode krijgt de oudste transactie altijd voorrang. De tijdstempel van de transactie wordt bepaald aan de hand van de systeemtijd, en het is het meest gebruikte protocol voor gelijktijdige transacties. Lock-gebaseerde protocollen beheren de volgorde tussen conflicterende transacties tijdens de uitvoering; timestamp-gebaseerde protocollen beheren conflicten zodra een bewerking wordt aangemaakt.
Voorbeeld:
Suppose there are three transactions T1, T2, and T3. T1 has entered the system at time 0010 T2 has entered the system at 0020 T3 has entered the system at 0030 Priority will be given to transaction T1, then T2 and lastly T3.
Voordelen:
- Schema's zijn serialiseerbaar, net als 2PL-protocollen.
- Geen wachttijd voor de transactie, waardoor de mogelijkheid van impassen wordt uitgesloten.
Nadelen: Uithongering kan optreden als dezelfde transactie herhaaldelijk wordt gestart en vervolgens steeds weer wordt afgebroken.
Validatiegebaseerd protocol
De Validatiegebaseerd protocol In DBMS is optimistische gelijktijdigheidscontrole, ook wel bekend als de techniek voor het beheersen van gelijktijdigheid, een methode om conflicten tussen gelijktijdige transacties te voorkomen. Bij dit protocol worden lokale kopieรซn van de transactiegegevens bijgewerkt in plaats van de gegevens zelf, wat resulteert in minder interferentie tijdens de uitvoering.
Het op validatie gebaseerde protocol wordt in drie fasen uitgevoerd:
- Lees Fase
- Validatiefase
- Schrijf fase
Lees Fase
Tijdens de leesfase kunnen gegevenswaarden door een transactie worden gelezen, maar schrijfbewerkingen of updates worden alleen toegepast op de lokale kopieรซn van de gegevens, niet op de daadwerkelijke database.
Validatiefase
Tijdens de validatiefase worden de gegevens gecontroleerd om er zeker van te zijn dat het toepassen van de updates de serialiseerbaarheid niet schendt.
Schrijf fase
Tijdens de schrijffase worden de updates in de database toegepast als de validatie succesvol is; anders worden de updates verworpen en wordt de transactie teruggedraaid.
Vergelijking van protocollen voor gelijktijdigheidscontrole
De vier protocolfamilies gaan uit van verschillende voorspellingen over hoe vaak transacties daadwerkelijk conflicteren. De onderstaande tabel geeft een overzicht van de indeling van elke familie.
| Protocol | Aanpak | impasse | Het beste wanneer |
|---|---|---|---|
| Op vergrendeling gebaseerd | Pessimistisch, sloten sluiten vรณรณr toegang | Mogelijk | Conflicten komen vaak voor. |
| Tweefasenvergrendeling | Pessimistische, groeiende en krimpende fasen | Mogelijk | Serialiseerbaarheid is vereist. |
| Op basis van tijdstempel | Sorteren op tijdstempel | Geen impasse | Volgorde bepalen is belangrijk, wachten kost geld. |
| Validatiegebaseerd | Optimistisch, eerst controleren, dan schrijven. | Geen impasse | Conflicten komen zelden voor. |
Kort gezegd gaan lock-based en 2PL-protocollen ervan uit dat conflicten vaak voorkomen en voorkomen ze deze bij voorbaat, terwijl timestamp- en validatieprotocollen ervan uitgaan dat conflicten zeldzaam zijn en ze pas oplossen wanneer ze zich voordoen.
Kenmerken van een goed gelijktijdigheidsprotocol
Een ideaal mechanisme voor het beheersen van gelijktijdigheid heeft de volgende doelstellingen:
- Het moet bestand zijn tegen storingen op de locatie en communicatieproblemen.
- Het maakt de parallelle uitvoering van transacties mogelijk om maximale gelijktijdigheid te bereiken.
- De opslagmechanismen en rekenmethoden moeten bescheiden zijn om de overhead te minimaliseren.
- Het moet bepaalde beperkingen opleggen aan de structuur van de elementaire acties van transacties.

