Wat is gelijktijdigheidscontrole?
Gelijktijdigheidscontrole in het databasebeheersysteem is een procedure voor het beheren van gelijktijdige bewerkingen zonder met elkaar in conflict te komen. Het zorgt ervoor dat databasetransacties gelijktijdig en nauwkeurig worden uitgevoerd om correcte resultaten te produceren zonder de gegevensintegriteit van de respectieve database te schenden.
Gelijktijdige toegang is vrij eenvoudig als alle gebruikers alleen gegevens lezen. Ze kunnen elkaar op geen enkele manier hinderen. Hoewel het voor elke praktische database een combinatie van LEES- en SCHRIJF-bewerkingen zou hebben, en daarom is de gelijktijdigheid een uitdaging.
DBMS Concurrency Control wordt gebruikt om dergelijke conflicten op te lossen, die meestal optreden bij een systeem met meerdere gebruikers. Concurrency Control is daarom het belangrijkste element voor het goed functioneren van een databasebeheersysteem waarbij twee of meer databasetransacties tegelijkertijd worden uitgevoerd, waarvoor toegang tot dezelfde gegevens vereist is.
In deze tutorial leer je
- Wat is gelijktijdigheidscontrole?
- Mogelijke problemen van gelijktijdigheid
- Waarom de gelijktijdigheidsmethode gebruiken?
- Gelijktijdigheidscontrole-protocollen
- Op slot gebaseerde protocollen
- Protocol voor tweefasevergrendeling (2PL)
- Op tijdstempels gebaseerde protocollen
- Op validatie gebaseerd protocol
- Kenmerken van Good Concurrency Protocol
Mogelijke problemen van gelijktijdigheid
Hier zijn enkele problemen waarmee u waarschijnlijk te maken zult krijgen tijdens het gebruik van de DBMS Concurrency Control-methode:
- Verloren updates treden op wanneer meerdere transacties dezelfde rij selecteren en de rij bijwerken op basis van de geselecteerde waarde
- Problemen met niet-toegewezen afhankelijkheid treden op wanneer de tweede transactie een rij selecteert die wordt bijgewerkt door een andere transactie ( dirty read )
- Niet-herhaalbaar lezen vindt plaats wanneer een tweede transactie meerdere keren probeert toegang te krijgen tot dezelfde rij en elke keer verschillende gegevens leest.
- Onjuiste samenvatting probleem treedt op wanneer een transactie de waarde van alle exemplaren van een herhaald data-item overschrijdt, en de tweede transactie enkele exemplaren van dat specifieke data-item bijwerkt. In die situatie geeft de resulterende samenvatting geen correct resultaat weer.
Waarom de gelijktijdigheidsmethode gebruiken?
Redenen voor het gebruik van de gelijktijdigheidscontrole-methode is DBMS:
- Isolatie toepassen door wederzijdse uitsluiting tussen tegenstrijdige transacties
- Om problemen met lezen-schrijven en schrijven-schrijven op te lossen
- Om de databaseconsistentie te behouden door constant uitvoeringsbelemmeringen te behouden
- Het systeem moet de interactie tussen de gelijktijdige transacties regelen. Deze controle wordt bereikt met behulp van schema's voor gelijktijdige controle.
- Gelijktijdigheidscontrole helpt om serialiseerbaarheid te garanderen
Voorbeeld
Stel dat twee mensen die tegelijkertijd naar elektronische kiosken gaan om een bioscoopkaartje te kopen voor dezelfde film en dezelfde showtijd.
Er is echter nog maar één stoel over voor de filmshow in dat specifieke theater. Zonder gelijktijdigheidscontrole in DBMS is het mogelijk dat beide bioscoopbezoekers uiteindelijk een kaartje kopen. De methode voor gelijktijdigheidscontrole staat dit echter niet toe. Beide bioscoopbezoekers hebben nog steeds toegang tot informatie die is geschreven in de database met filmopstellingen. Maar concurrency control biedt alleen een ticket aan de koper die het transactieproces als eerste heeft voltooid.
Gelijktijdigheidscontrole-protocollen
Verschillende protocollen voor gelijktijdigheidscontrole bieden verschillende voordelen tussen de hoeveelheid gelijktijdigheid die ze toestaan en de hoeveelheid overhead die ze opleggen. Hieronder volgen de technieken voor gelijktijdigheidscontrole in DBMS:
- Op slot gebaseerde protocollen
- Vergrendelingsprotocol in twee fasen
- Op tijdstempels gebaseerde protocollen
- Op validatie gebaseerde protocollen
Op slot gebaseerde protocollen
Op vergrendeling gebaseerde protocollen in DBMS is een mechanisme waarbij een transactie de gegevens niet kan lezen of schrijven totdat deze een geschikte vergrendeling heeft verkregen. Op vergrendeling gebaseerde protocollen helpen het gelijktijdigheidsprobleem in DBMS voor gelijktijdige transacties te elimineren door een bepaalde transactie te vergrendelen of te isoleren voor een enkele gebruiker.
Een slot is een gegevensvariabele die is gekoppeld aan een gegevensitem. Deze vergrendeling geeft aan dat bewerkingen kunnen worden uitgevoerd op het gegevensitem. Vergrendelingen in DBMS helpen bij het synchroniseren van de toegang tot de database-items door gelijktijdige transacties.
Alle vergrendelingsverzoeken worden gedaan aan de concurrency-control manager. Transacties gaan pas door nadat het vergrendelingsverzoek is ingewilligd.
Binaire vergrendelingen : een binaire vergrendeling op een gegevensitem kan zowel vergrendelde als ontgrendelde toestanden zijn.
Gedeeld / exclusief: dit type vergrendelingsmechanisme scheidt de vergrendelingen in DBMS op basis van hun gebruik. Als een vergrendeling wordt verkregen op een data-item om een schrijfbewerking uit te voeren, wordt dit een exclusieve vergrendeling genoemd.
1. Gedeeld slot (en):
Een gedeeld slot wordt ook wel een alleen-lezen slot genoemd. Met de gedeelde vergrendeling kan het gegevensitem worden gedeeld tussen transacties. Dit komt omdat u nooit toestemming zult hebben om gegevens over het gegevensitem bij te werken.
Beschouw bijvoorbeeld een geval waarin twee transacties het rekeningsaldo van een persoon aflezen. De database laat ze lezen door een gedeeld slot te plaatsen. Als een andere transactie het saldo van dat account echter wil bijwerken, voorkomt de gedeelde vergrendeling dit totdat het leesproces is voltooid.
2. Exclusief slot (X):
Met de Exclusive Lock kan een data-item zowel gelezen als geschreven worden. Dit is exclusief en kan niet gelijktijdig op hetzelfde gegevensitem worden gehouden. X-lock wordt aangevraagd met behulp van lock-x instructie. Transacties kunnen het data-item ontgrendelen na het voltooien van de 'schrijf'-bewerking.
Bijvoorbeeld wanneer een transactie het rekeningsaldo van een persoon moet bijwerken. U kunt deze transactie toestaan door er een X-lock op te plaatsen. Daarom voorkomt exclusieve vergrendeling deze bewerking wanneer de tweede transactie wil lezen of schrijven.
3. Simplistisch slotprotocol
Met dit type op vergrendeling gebaseerde protocollen kunnen transacties een vergrendeling op elk object verkrijgen voordat de bewerking wordt gestart. Transacties kunnen het data-item ontgrendelen na het voltooien van de 'schrijf'-bewerking.
4. Voorafgaande aanspraak maken op vergrendeling
Pre-claiming lock-protocol helpt bij het evalueren van bewerkingen en het maken van een lijst met vereiste gegevensitems die nodig zijn om een uitvoeringsproces te starten. In de situatie dat alle vergrendelingen zijn toegekend, wordt de transactie uitgevoerd. Daarna worden alle vergrendelingen vrijgegeven wanneer alle bewerkingen zijn voltooid.
Verhongering
Uithongering is de situatie waarin een transactie voor onbepaalde tijd moet wachten om een slot te krijgen.
Hieronder volgen de redenen voor uithongering:
- Bij het wachten wordt het schema voor vergrendelde items niet goed beheerd
- In het geval van een bronlek
- Dezelfde transactie wordt herhaaldelijk als slachtoffer geselecteerd
Impasse
Deadlock verwijst naar een specifieke situatie waarin twee of meer processen wachten op elkaar om een resource vrij te geven of meer dan twee processen wachten op de resource in een circulaire keten.
Vergrendelingsprotocol in twee fasen
Two Phase Locking Protocol, ook bekend als 2PL-protocol, is een methode voor gelijktijdigheidscontrole in DBMS die serialiseerbaarheid garandeert door een vergrendeling toe te passen op de transactiegegevens die andere transacties blokkeert om tegelijkertijd toegang te krijgen tot dezelfde gegevens. Het tweefasevergrendelingsprotocol helpt het gelijktijdigheidsprobleem in DBMS te elimineren.
Dit vergrendelingsprotocol verdeelt de uitvoeringsfase van een transactie in drie verschillende delen.
- In de eerste fase, wanneer de transactie begint uit te voeren, is toestemming vereist voor de vergrendelingen die nodig zijn.
- Het tweede deel is waar de transactie alle vergrendelingen verkrijgt. Wanneer een transactie zijn eerste vergrendeling opheft, begint de derde fase.
- In deze derde fase kan de transactie geen nieuwe sloten eisen. In plaats daarvan geeft het alleen de verworven vergrendelingen vrij.
Met het Two-Phase Locking-protocol kan elke transactie een verzoek tot vergrendeling of ontgrendeling indienen in twee stappen:
- Groeifase : in deze fase kan de transactie vergrendelingen verkrijgen, maar geen vergrendelingen vrijgeven.
- Krimpende fase : in deze fase kan een transactie vergrendelingen vrijgeven, maar geen nieuwe vergrendeling verkrijgen
Het is waar dat het 2PL-protocol serialiseerbaarheid biedt. Het zorgt er echter niet voor dat impasses niet optreden.
In het bovenstaande diagram kunt u zien dat lokale en globale impasse-detectoren op zoek zijn naar impasses en deze oplossen door transacties te hervatten naar hun oorspronkelijke status.
Strikte tweefasige vergrendelingsmethode
Het strikt-tweefasige vergrendelingssysteem is bijna vergelijkbaar met 2PL. Het enige verschil is dat Strict-2PL nooit een vergrendeling vrijgeeft na gebruik. Het houdt alle vergrendelingen vast tot het vastleggingspunt en geeft alle vergrendelingen in één keer vrij wanneer het proces voorbij is.
Gecentraliseerde 2PL
In Centralized 2 PL is een enkele site verantwoordelijk voor het sluisbeheerproces. Het heeft slechts één vergrendelingsbeheerder voor het hele DBMS.
Primair exemplaar 2PL
Primair kopie 2PL-mechanisme, veel lock-managers worden gedistribueerd naar verschillende sites. Daarna is een bepaalde slotbeheerder verantwoordelijk voor het beheren van het slot voor een set gegevensitems. Wanneer de primaire kopie is bijgewerkt, wordt de wijziging doorgegeven aan de slaves.
Gedistribueerde 2PL
Bij dit soort tweefasige vergrendelingsmechanismen worden Lock-managers over alle sites gedistribueerd. Ze zijn verantwoordelijk voor het beheren van vergrendelingen voor gegevens op die site. Als er geen gegevens worden gerepliceerd, is dit gelijk aan primaire kopie 2PL. De communicatiekosten van Distributed 2PL zijn aanzienlijk hoger dan die van de primaire kopie 2PL
Op tijdstempels gebaseerde protocollen
Op tijdstempels gebaseerd protocol in DBMS is een algoritme dat de systeemtijd of logische teller gebruikt als een tijdstempel om de uitvoering van gelijktijdige transacties te serialiseren. Het op tijdstempel gebaseerde protocol zorgt ervoor dat alle conflicterende lees- en schrijfbewerkingen in een tijdstempelvolgorde worden uitgevoerd.
Bij deze methode krijgt de oudere transactie altijd voorrang. Het gebruikt systeemtijd om het tijdstempel van de transactie te bepalen. Dit is het meest gebruikte gelijktijdigheidsprotocol.
Op vergrendelings gebaseerde protocollen helpen u de volgorde tussen de conflicterende transacties te beheren wanneer ze worden uitgevoerd. Op tijdstempels gebaseerde protocollen beheren conflicten zodra een bewerking wordt gemaakt.
Voorbeeld:
Suppose there are there transactions T1, T2, and T3.T1 has entered the system at time 0010T2 has entered the system at 0020T3 has entered the system at 0030Priority will be given to transaction T1, then transaction T2 and lastly Transaction T3.
Voordelen :
- Schema's kunnen worden geserialiseerd, net als 2PL-protocollen
- U hoeft niet te wachten op de transactie, waardoor de kans op impasses wordt geëlimineerd!
Nadelen:
Verhongering is mogelijk als dezelfde transactie opnieuw wordt gestart en voortdurend wordt afgebroken
Op validatie gebaseerd protocol
Op validatie gebaseerd protocol in DBMS, ook bekend als Optimistic Concurrency Control Technique, is een methode om gelijktijdigheid in transacties te voorkomen. In dit protocol worden de lokale kopieën van de transactiegegevens bijgewerkt in plaats van de gegevens zelf, wat resulteert in minder interferentie tijdens het uitvoeren van de transactie.
Het op validatie gebaseerde protocol wordt uitgevoerd in de volgende drie fasen:
- Lees Fase
- Validatiefase
- Schrijf fase
Lees Fase
In de leesfase kunnen de gegevenswaarden uit de database worden gelezen door een transactie, maar de schrijfbewerking of updates worden alleen toegepast op de lokale gegevenskopieën, niet op de feitelijke database.
Validatiefase
In de validatiefase worden de gegevens gecontroleerd om er zeker van te zijn dat er geen schending is van de serialiseerbaarheid tijdens het toepassen van de transactie-updates op de database.
Schrijf fase
In de schrijffase worden de updates toegepast op de database als de validatie succesvol is, anders; de updates worden niet toegepast en de transactie wordt teruggedraaid.
Kenmerken van Good Concurrency Protocol
Een ideaal DBMS-mechanisme voor gelijktijdigheidscontrole heeft de volgende doelstellingen:
- Moet bestand zijn tegen site- en communicatiefouten.
- Het maakt de parallelle uitvoering van transacties mogelijk om maximale gelijktijdigheid te bereiken.
- De opslagmechanismen en computationele methoden moeten bescheiden zijn om overhead te minimaliseren.
- Het moet enkele beperkingen opleggen aan de structuur van atomaire acties van transacties.
Overzicht
- Gelijktijdigheidscontrole is de procedure in DBMS voor het beheren van gelijktijdige bewerkingen zonder conflicten met elkaar.
- Verloren updates, vuil gelezen, niet-herhaalbaar gelezen en onjuist overzichtsproblemen zijn problemen die het gevolg zijn van een gebrek aan gelijktijdigheidscontrole.
- Lock-Based, Two-Phase, Timestamp-Based, Validation-Based zijn soorten gelijktijdigheidsafhandelingsprotocollen
- Het slot kan Gedeeld (S) of Exclusief (X) zijn
- Het tweefasige vergrendelingsprotocol, ook bekend als een 2PL-protocolvereiste-transactie, moet een vergrendeling krijgen nadat een van de vergrendelingen is vrijgegeven. Het heeft 2 fasen groeien en krimpen.
- Het op tijdstempel gebaseerde algoritme gebruikt een tijdstempel om de uitvoering van gelijktijdige transacties te serialiseren. Het protocol gebruikt de systeemtijd of logische telling als tijdstempel.