DBMS gelijktijdigheidscontrole: tijdstempel en op vergrendelingen gebaseerde protocollen

Wat is gelijktijdigheidscontrole?

Gelijktijdigheidscontrole in Database Management System is een procedure voor het beheren van gelijktijdige bewerkingen zonder dat ze met elkaar in conflict komen. Het zorgt ervoor dat databasetransacties gelijktijdig en nauwkeurig worden uitgevoerd om correcte resultaten te produceren zonder de gegevensintegriteit van de betreffende database te schenden.

Gelijktijdige toegang is vrij eenvoudig als alle gebruikers alleen maar data lezen. Er is geen manier waarop ze elkaar kunnen hinderen. Hoewel voor elke praktische database een mix van READ en WRITE-bewerkingen zou zijn en daarom is de gelijktijdigheid een uitdaging.

DBMS Concurrency Control wordt gebruikt om dergelijke conflicten aan te pakken, die meestal voorkomen bij een multi-user systeem. Daarom is Concurrency Control het belangrijkste element voor het goed functioneren van een Database Management System waarbij twee of meer databasetransacties gelijktijdig worden uitgevoerd, die toegang tot dezelfde gegevens vereisen.

Potentiële problemen van gelijktijdigheid

Hier volgen enkele problemen waarmee u waarschijnlijk te maken zult krijgen bij het gebruik van de DBMS Concurrency Control-methode:

  • Verloren updates treedt op wanneer meerdere transacties dezelfde rij selecteren en de rij bijwerken op basis van de geselecteerde waarde
  • Niet-vastgelegde afhankelijkheidsproblemen doen zich voor wanneer de tweede transactie een rij selecteert die wordt bijgewerkt door een andere transactie (vies gelezen)
  • Niet-herhaalbaar lezen treedt op wanneer een tweede transactie verschillende keren probeert toegang te krijgen tot dezelfde rij en elke keer andere gegevens leest.
  • Probleem met onjuiste samenvatting vindt plaats wanneer één transactie een samenvatting geeft van de waarde van alle exemplaren van een herhaald gegevensitem, en de tweede transactie enkele exemplaren van dat specifieke gegevensitem bijwerkt. In dat geval geeft de resulterende samenvatting geen juist resultaat weer.

Waarom de Concurrency-methode gebruiken?

Redenen voor het gebruik van de gelijktijdigheidscontrolemethode zijn DBMS:

  • Isolatie toepassen door wederzijdse uitsluiting tussen conflicterende transacties
  • Om problemen met lees-schrijf- en schrijf-schrijfconflicten op te lossen
  • Om de databaseconsistentie te behouden door voortdurend uitvoeringsbelemmeringen te behouden
  • Het systeem moet de interactie tussen de gelijktijdige transacties controleren. Deze controle wordt bereikt met behulp van gelijktijdige controleschema's.
  • Gelijktijdigheidscontrole helpt de serialiseerbaarheid te garanderen

Voorbeeld

Stel dat twee mensen tegelijkertijd naar een elektronische kiosk gaan om een ​​kaartje voor dezelfde film en dezelfde voorstelling te kopen.

Er is echter nog maar één plaats vrij voor de filmvoorstelling in dat specifieke theater. Zonder gelijktijdigheidscontrole in DBMS is het mogelijk dat beide bioscoopbezoekers uiteindelijk een kaartje kopen. De gelijktijdigheidscontrolemethode laat dit echter niet toe. Beide bioscoopbezoekers hebben nog steeds toegang tot de informatie die is geschreven in de database met bioscoopstoelen. Maar gelijktijdigheidscontrole levert alleen een ticket op voor de koper die als eerste het transactieproces heeft voltooid.

Protocollen voor gelijktijdigheidscontrole

Verschillende gelijktijdigheidscontroleprotocollen bieden verschillende voordelen tussen de hoeveelheid gelijktijdigheid die ze toestaan ​​en de hoeveelheid overhead die ze opleggen. Hieronder volgen de gelijktijdigheidscontroletechnieken in DBMS:

  • Op slot gebaseerde protocollen
  • Tweefasig vergrendelingsprotocol
  • Op tijdstempels gebaseerde protocollen
  • Op validatie gebaseerde protocollen

Op slot gebaseerde protocollen

Op slot gebaseerde protocollen in DBMS is een mechanisme waarin 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 lock is een datavariabele die is gekoppeld aan een data-item. Deze lock geeft aan dat bewerkingen kunnen worden uitgevoerd op het data-item. Locks in DBMS helpen bij het synchroniseren van toegang tot de database-items door gelijktijdige transacties.

Alle vergrendelingsverzoeken worden ingediend bij de gelijktijdigheidsbeheermanager. Transacties gaan pas door zodra het vergrendelingsverzoek is ingewilligd.

Binaire sloten: Een binaire vergrendeling op een gegevensitem kan een vergrendelde of ontgrendelde status hebben.

Gedeeld/exclusief: Dit type vergrendelingsmechanisme scheidt de sloten in DBMS op basis van hun gebruik. Als een vergrendeling op een data-item 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 het gedeelde slot kan het gegevensitem tussen transacties worden gedeeld. Dit komt omdat u nooit toestemming zult hebben om gegevens over het gegevensitem bij te werken.

Neem bijvoorbeeld een geval waarin twee transacties het rekeningsaldo van een persoon lezen. De databank laat ze lezen door een gedeeld slot te plaatsen. Als een andere transactie echter het saldo van die rekening wil bijwerken, verhindert gedeelde vergrendeling dit totdat het leesproces voorbij is.

2. Exclusief slot (X):

Met de Exclusive Lock kan een data-item zowel worden gelezen als geschreven. Dit is exclusief en kan niet gelijktijdig op hetzelfde data-item worden bewaard. X-lock wordt aangevraagd met behulp van de 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. Wanneer de tweede transactie wil lezen of schrijven, voorkomt de exclusieve lock deze bewerking.

3. Simplistisch slotprotocol

Dit type lock-based protocols staat transacties toe om een ​​lock te verkrijgen op elk object voordat de operatie begint. Transacties kunnen het data-item ontgrendelen na het voltooien van de 'schrijf'-operatie.

4. Vergrendeling vooraf claimen

Pre-claiming lock protocol helpt bij het evalueren van bewerkingen en het maken van een lijst met vereiste data-items die nodig zijn om een ​​uitvoeringsproces te starten. In de situatie waarin alle locks zijn verleend, wordt de transactie uitgevoerd. Daarna worden alle locks vrijgegeven wanneer alle bewerkingen zijn voltooid.

uithongering

Uithongering is de situatie waarin een transactie voor onbepaalde tijd moet wachten voordat een slot wordt verkregen.

Hieronder staan ​​de redenen voor hongersnood:

  • Wanneer het wachtschema voor vergrendelde items niet goed wordt beheerd
  • In het geval van het lekken van hulpbronnen
  • Dezelfde transactie wordt herhaaldelijk als slachtoffer geselecteerd

impasse

Deadlock verwijst naar een specifieke situatie waarin twee of meer processen op elkaar wachten om een ​​resource vrij te geven, of waarin meer dan twee processen in een circulaire keten op de resource wachten.

Tweefasig vergrendelingsprotocol

Tweefasig vergrendelingsprotocol ook bekend als 2PL-protocol is een methode van gelijktijdigheidscontrole in DBMS die serialiseerbaarheid garandeert door een vergrendeling toe te passen op de transactiegegevens die andere transacties blokkeert om gelijktijdig toegang te krijgen tot dezelfde gegevens. Two Phase Locking-protocol 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 wordt uitgevoerd, heeft deze toestemming nodig voor de vergrendelingen die deze nodig heeft.
  • In het tweede deel verkrijgt de transactie alle sloten. Wanneer een transactie zijn eerste lock vrijgeeft, begint de derde fase.
  • In deze derde fase kan de transactie geen nieuwe sloten eisen. In plaats daarvan worden alleen de verworven sloten vrijgegeven.

Tweefasig vergrendelingsprotocol

Met het Two-Phase Locking-protocol kan elke transactie in twee stappen een verzoek tot vergrendeling of ontgrendeling indienen:

  • Groeifase: In deze fase kan een 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 garandeert echter niet dat er geen deadlocks optreden.

In het bovenstaande diagram kunt u zien dat lokale en globale deadlockdetectoren naar deadlocks zoeken en deze oplossen door transacties te hervatten naar hun oorspronkelijke status.

Strikte tweefasige vergrendelingsmethode

Het strikt tweefasige vergrendelingssysteem is bijna gelijk aan 2PL. Het enige verschil is dat Strict-2PL een slot nooit vrijgeeft na gebruik ervan. Het houdt alle vergrendelingen vast tot het commit-punt en geeft alle vergrendelingen in één keer vrij als het proces voorbij is.

Gecentraliseerde 2PL

In Centralized 2 PL is één locatie verantwoordelijk voor het sluisbeheerproces. Het heeft slechts één slotmanager voor het gehele DBMS.

Primair exemplaar 2PL

Primair exemplaar 2PL-mechanisme, veel slotmanagers worden over verschillende sites verspreid. Daarna is een bepaalde slotbeheerder verantwoordelijk voor het beheer van het slot voor een set data-items. Wanneer de primaire kopie is bijgewerkt, wordt de wijziging doorgegeven aan de slaves.

Gedistribueerde 2PL

Bij dit soort tweefasige sluitmechanismen worden sluismanagers over alle locaties verspreid. Zij zijn verantwoordelijk voor het beheer van de gegevensvergrendelingen op die locatie. Als er geen gegevens worden gerepliceerd, is dit gelijk aan de primaire kopie 2PL. De communicatiekosten van Distributed 2PL zijn aanzienlijk hoger dan die van primair exemplaar 2PL

Op tijdstempel gebaseerde protocollen

Op tijdstempel gebaseerd protocol in DBMS is een algoritme dat de System Time of Logical Counter gebruikt als een tijdstempel om de uitvoering van gelijktijdige transacties te serialiseren. Het op tijdstempels gebaseerde protocol zorgt ervoor dat alle conflicterende lees- en schrijfbewerkingen worden uitgevoerd in een tijdstempelvolgorde.

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.

Lock-based protocollen helpen u de volgorde te beheren tussen de conflicterende transacties wanneer ze worden uitgevoerd. Timestamp-based protocollen beheren conflicten zodra een bewerking is gemaakt.

Voorbeeld:

Suppose there are there 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 transaction T2 and lastly Transaction T3.

Voordelen:

  • Schema's zijn serialiseerbaar, net als 2PL-protocollen
  • U hoeft niet te wachten op de transactie, waardoor er geen kans is op impasses!

nadelen:

Uithongering 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 de uitvoering van de transactie.

Het validatieprotocol wordt in de volgende drie fasen uitgevoerd:

  1. Lees Fase
  2. Validatiefase
  3. 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 database zelf.

Validatiefase

In de validatiefase worden de gegevens gecontroleerd om er zeker van te zijn dat er geen schending van de serialiseerbaarheid plaatsvindt tijdens het toepassen van de transactie-updates op de database.

Schrijf fase

In de schrijffase worden de updates op de database toegepast als de validatie succesvol is, anders; de updates worden niet toegepast en de transactie wordt teruggedraaid.

Kenmerken van een goed gelijktijdigheidsprotocol

Een ideaal DBMS-mechanisme voor gelijktijdige controle heeft de volgende doelstellingen:

  • Moet bestand zijn tegen locatie- en communicatiefouten.
  • 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.
  • Er moeten bepaalde beperkingen worden opgelegd aan de structuur van atomaire transacties.

Samenvatting

  • Gelijktijdigheidscontrole is de procedure in dbms voor het beheren van gelijktijdige bewerkingen zonder dat deze met elkaar in conflict komen.
  • Verloren updates, vies lezen, niet-herhaalbaar lezen en problemen met een onjuiste samenvatting zijn problemen die te wijten zijn aan een gebrek aan gelijktijdigheidscontrole.
  • Op vergrendeling gebaseerd, tweefasig, op tijdstempel gebaseerd en op validatie gebaseerd zijn typen protocollen voor gelijktijdige afhandeling
  • Het slot kan gedeeld (S) of exclusief (X) zijn
  • Two-Phase locking protocol, ook wel bekend als een 2PL protocol, vereist dat de transactie een lock verkrijgt nadat het een van de locks vrijgeeft. Het heeft 2 fases van groeien en krimpen.
  • Het op tijdstempel gebaseerde algoritme gebruikt een tijdstempel om de uitvoering van gelijktijdige transacties te serialiseren. Het protocol maakt gebruik van de Systeemtijd of logische telling als een tijdstempel.