DBVS vienlaicīguma kontrole: Laika zīmogs & Bloķēšanas protokoli

Satura rādītājs:

Anonim

Kas ir vienlaicīguma kontrole?

Vienlaicīguma kontrole datu bāzu pārvaldības sistēmā ir vienlaicīgu darbību pārvaldīšanas procedūra, nekonfliktējot savā starpā. Tas nodrošina, ka datu bāzes darījumi tiek veikti vienlaicīgi un precīzi, lai iegūtu pareizus rezultātus, nepārkāpjot attiecīgās datu bāzes datu integritāti.

Vienlaicīga piekļuve ir diezgan vienkārša, ja visi lietotāji tikai nolasa datus. Viņi nekādā veidā nevar iejaukties. Lai arī jebkurai praktiskai datu bāzei tajā būtu vairākas READ un WRITE operācijas, tāpēc vienlaicīgums ir izaicinājums.

DBMS vienlaicīguma kontrole tiek izmantota, lai novērstu šādus konfliktus, kas lielākoties notiek ar daudzlietotāju sistēmu. Tāpēc vienlaicīguma kontrole ir vissvarīgākais elements datu bāzes pārvaldības sistēmas pareizai darbībai, kur vienlaikus tiek veikti divi vai vairāki datu bāzes darījumi, kuriem nepieciešama piekļuve vieniem un tiem pašiem datiem.

Šajā apmācībā jūs uzzināsiet

  • Kas ir vienlaicīguma kontrole?
  • Potenciālās vienlaicīguma problēmas
  • Kāpēc izmantot vienlaicīguma metodi?
  • Vienlaicīguma kontroles protokoli
  • Bloķēšanas protokoli
  • Divu fāžu bloķēšanas (2PL) protokols
  • Laika zīmoga protokoli
  • Apstiprināšanas protokols
  • Labas vienlaicīguma protokola raksturojums

Potenciālās vienlaicīguma problēmas

Šeit ir daži jautājumi, ar kuriem jūs, iespējams, saskarsieties, izmantojot DBVS vienlaicības kontroles metodi:

  • Zaudētie atjauninājumi rodas, ja vairāki darījumi atlasa vienu un to pašu rindu un atjaunina rindu, pamatojoties uz atlasīto vērtību
  • Nepiesaistītas atkarības problēmas rodas, ja otrajā darījumā tiek atlasīta rinda, kuru atjaunina cits darījums ( netīri nolasīts )
  • Neatkārtojama lasīšana notiek, kad otrais darījums vairākas reizes mēģina piekļūt tai pašai rindai un katru reizi nolasa dažādus datus.
  • Nepareiza kopsavilkuma problēma rodas, ja vienā darījumā tiek apkopots visu atkārtotā datu vienuma eksemplāru vērtība, bet otrajā darījumā tiek atjaunināti daži šī konkrētā datu vienuma gadījumi. Šajā situācijā iegūtais kopsavilkums neatspoguļo pareizu rezultātu.

Kāpēc izmantot vienlaicīguma metodi?

Iemesli vienlaicības kontroles metodes izmantošanai ir DBVS:

  • Lai piemērotu izolāciju, savstarpēji izslēdzot konfliktējošos darījumus
  • Lai atrisinātu lasīšanas, rakstīšanas un rakstīšanas un rakstīšanas konfliktu problēmas
  • Lai saglabātu datu bāzes konsekvenci, pastāvīgi saglabājot izpildes šķēršļus
  • Sistēmai jākontrolē vienlaicīgo darījumu mijiedarbība. Šī kontrole tiek panākta, izmantojot vienlaicīgas vadības shēmas.
  • Vienlaicīguma kontrole palīdz nodrošināt serializējamību

Piemērs

Pieņemsim, ka divi cilvēki, kas vienlaikus apmeklē elektroniskos kioskus, lai nopirktu filmas biļeti tai pašai filmai un vienādam izrādes laikam.

Tomēr filmu izrādei konkrētajā teātrī ir atlicis tikai viena vieta. Bez vienlaicīguma kontroles DBVS, iespējams, abi kino skatītāji galu galā iegādāsies biļeti. Tomēr vienlaicīguma kontroles metode neļauj tam notikt. Abi kino skatītāji joprojām var piekļūt informācijai, kas ierakstīta filmu sēdvietu datu bāzē. Bet vienlaicīguma kontrole nodrošina biļeti tikai pircējam, kurš darījuma procesu ir pabeidzis vispirms.

Vienlaicīguma kontroles protokoli

Dažādi vienlaicīguma kontroles protokoli piedāvā atšķirīgas priekšrocības starp pieļaujamo vienlaicīguma un pieskaitāmo pieskaitāmo summu daudzumu. Tālāk ir norādīti vienlaicīguma kontroles paņēmieni DBVS:

  • Bloķēšanas protokoli
  • Divu fāžu bloķēšanas protokols
  • Laika zīmoga protokoli
  • Apstiprināšanas protokoli

Bloķēšanas protokoli

Bloķēšanas protokoli DBVS ir mehānisms, kurā transakcija nevar lasīt vai rakstīt datus, kamēr tā neiegūst atbilstošu bloķēšanu. Bloķēšanas protokoli palīdz novērst vienlaicīguma problēmu DBVS vienlaicīgiem darījumiem, bloķējot vai izolējot konkrētu darījumu vienam lietotājam.

Bloķēšana ir datu mainīgais, kas ir saistīts ar datu vienumu. Šī bloķēšana nozīmē, ka darbības, kuras var veikt ar datu vienumu. DBVS slēdzenes palīdz sinhronizēt piekļuvi datu bāzes vienumiem, veicot vienlaikus darījumus.

Visi bloķēšanas pieprasījumi tiek veikti vienlaicīguma kontroles pārvaldniekam. Darījumi turpinās tikai pēc bloķēšanas pieprasījuma izpildes.

Binārās slēdzenes: Datu vienības binārā bloķēšana var bloķēt vai atbloķēt stāvokļus.

Koplietojams / ekskluzīvs: šāda veida bloķēšanas mehānisms atdala slēdzenes DBVS, pamatojoties uz to lietojumu. Ja datu vienumam tiek iegūta bloķēšana, lai veiktu rakstīšanas darbību, to sauc par ekskluzīvu bloķēšanu.

1. Koplietojama slēdzene (S):

Koplietojamo bloķēšanu sauc arī par tikai lasāmu. Izmantojot koplietojamo bloķēšanu, datu vienumu var koplietot starp darījumiem. Tas ir tāpēc, ka jums nekad nebūs atļaujas atjaunināt datus par datu vienumu.

Piemēram, ņemiet vērā gadījumu, kad divi darījumi lasa personas konta atlikumu. Datu bāze ļaus viņiem lasīt, ievietojot kopīgu slēdzeni. Tomēr, ja kāds cits darījums vēlas atjaunināt šī konta atlikumu, kopīga bloķēšana to novērš, līdz lasīšanas process nav beidzies.

2. Ekskluzīva slēdzene (X):

Izmantojot ekskluzīvo slēdzeni, datu vienumu var lasīt, kā arī rakstīt. Tas ir ekskluzīvs, un to nevar vienlaikus turēt vienā un tajā pašā datu objektā. X-lock tiek pieprasīts, izmantojot lock-x instrukciju. Darījumi var atbloķēt datu vienumu pēc rakstīšanas darbības pabeigšanas.

Piemēram, kad darījumam ir jāatjaunina personas konta atlikums. Jūs varat atļaut šo darījumu, ievietojot tajā X slēdzeni. Tāpēc, kad otrais darījums vēlas lasīt vai rakstīt, ekskluzīva bloķēšana novērš šo darbību.

3. Vienkāršs bloķēšanas protokols

Šāda veida bloķēšanas protokoli ļauj darījumiem iegūt bloķēšanu katram objektam pirms darbības sākšanas. Darījumi var atbloķēt datu vienumu pēc rakstīšanas darbības pabeigšanas.

4. Iepriekš pieprasīta bloķēšana

Bloķēšanas protokola iepriekšēja pieprasīšana palīdz novērtēt darbības un izveidot nepieciešamo datu vienumu sarakstu, kas nepieciešami izpildes procesa uzsākšanai. Situācijā, kad tiek piešķirtas visas slēdzenes, darījums tiek izpildīts. Pēc tam visas slēdzenes atbrīvojas, kad visas tās darbības ir beigušās.

Bads

Bads ir situācija, kad darījumam ir jāgaida nenoteikts laiks, lai iegūtu slēdzeni.

Bada cēloņi ir šādi:

  • Gaidīšanas laikā bloķēto priekšmetu shēma netiek pienācīgi pārvaldīta
  • Resursu noplūdes gadījumā
  • Tas pats darījums tiek atkārtoti izvēlēts kā upuris

Strupceļš

Strupceļš attiecas uz konkrētu situāciju, kad divi vai vairāki procesi gaida, lai viens otru atbrīvotu resursu, vai vairāk nekā divi procesi gaida resursu apļveida ķēdē.

Divu fāžu bloķēšanas protokols

Divu fāžu bloķēšanas protokols, kas pazīstams arī kā 2PL protokols, ir vienlaicīguma kontroles metode DBVS, kas nodrošina serializējamību, darījumu datiem piemērojot bloķēšanu, kas bloķē citus darījumus, lai vienlaikus piekļūtu tiem pašiem datiem. Divu fāžu bloķēšanas protokols palīdz novērst vienlaicīguma problēmu DBVS.

Šis bloķēšanas protokols sadala darījuma izpildes fāzi trīs dažādās daļās.

  • Pirmajā posmā, kad darījumu sāk izpildīt, tam nepieciešama atļauja vajadzīgajām slēdzenēm.
  • Otrā daļa ir vieta, kur darījums iegūst visas slēdzenes. Kad darījums atbrīvo pirmo slēdzeni, sākas trešā fāze.
  • Šajā trešajā fāzē darījums nevar pieprasīt jaunas slēdzenes. Tā vietā tas atbrīvo tikai iegūtās slēdzenes.

Divfāžu bloķēšanas protokols ļauj katram darījumam veikt bloķēšanas vai atbloķēšanas pieprasījumu divos soļos:

  • Pieaugošā fāze : Šajā fāzē darījums var iegūt slēdzenes, bet nedrīkst atbrīvot nevienu slēdzeni.
  • Samazināšanās fāze : Šajā fāzē darījums var atbrīvot slēdzenes, bet nevar iegūt jaunu slēdzeni

Ir taisnība, ka 2PL protokols piedāvā serializējamību. Tomēr tas nenodrošina, ka strupceļš nenotiek.

Iepriekš sniegtajā diagrammā jūs varat redzēt, ka vietējie un globālie strupceļa detektori meklē strupceļus un tos atrisina, atsākot darījumus sākotnējos stāvokļos.

Stingra divfāžu bloķēšanas metode

Strict-Two fāžu bloķēšanas sistēma ir gandrīz līdzīga 2PL. Vienīgā atšķirība ir tāda, ka Strict-2PL pēc tā izmantošanas nekad neatbrīvo slēdzeni. Tas tur visas slēdzenes līdz saistības punktam un atbrīvo visas slēdzenes vienā piegājienā, kad process ir beidzies.

Centralizēts 2PL

Centralizētajā 2 PL par atslēgu pārvaldības procesu ir atbildīga viena vietne. Tam ir tikai viens bloķēšanas pārvaldnieks visai DBVS.

Primārā eksemplārs 2PL

Galvenais 2PL kopijas mehānisms, daudzi bloķēšanas pārvaldnieki tiek izplatīti dažādās vietnēs. Pēc tam konkrēts bloķēšanas pārvaldnieks ir atbildīgs par datu elementu kopas bloķēšanas pārvaldību. Kad primārā kopija ir atjaunināta, izmaiņas tiek izplatītas vergiem.

Izplatīts 2PL

Šāda veida divfāžu bloķēšanas mehānismā bloķēšanas pārvaldnieki tiek izplatīti visās vietnēs. Viņi ir atbildīgi par datu bloķēšanas pārvaldību šajā vietnē. Ja dati netiek atkārtoti, tie ir līdzvērtīgi primārajai kopijai 2PL. Izplatītā 2PL sakaru izmaksas ir diezgan augstākas nekā primārās 2PL kopijas

Laika zīmoga protokoli

Laika zīmoga protokols DBVS ir algoritms, kas kā laika zīmogu izmanto sistēmas laiku vai loģisko skaitītāju, lai sērijveidotu vienlaicīgu darījumu izpildi. Laika zīmoga protokols nodrošina, ka visas konfliktējošās lasīšanas un rakstīšanas operācijas tiek veiktas laika zīmoga secībā.

Šajā metodē prioritāte vienmēr tiek piešķirta vecākam darījumam. Tas izmanto sistēmas laiku, lai noteiktu darījuma laika zīmogu. Šis ir visbiežāk izmantotais vienlaicīguma protokols.

Bloķēšanas protokoli palīdz jums pārvaldīt secību starp konfliktējošajiem darījumiem, kad tie tiks izpildīti. Laika zīmoga protokoli pārvalda konfliktus, tiklīdz tiek izveidota operācija.

Piemērs:

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.

Priekšrocības :

  • Grafiki ir seriālizējami tāpat kā 2PL protokoli
  • Negaida darījumu, kas novērš strupceļu iespēju!

Trūkumi:

Bads ir iespējams, ja viens un tas pats darījums tiek atsākts un nepārtraukti pārtraukts

Apstiprināšanas protokols

Apstiprināšanas protokols DBVS, kas pazīstams arī kā Optimistic Concurrency Control Technique, ir metode, kā izvairīties no vienlaicīguma darījumos. Šajā protokolā tiek atjauninātas darījuma datu vietējās kopijas, nevis paši dati, kā rezultātā mazāk iejaucas darījuma izpildes laikā.

Validācijas protokols tiek veikts šādos trīs posmos:

  1. Lasīt fāzi
  2. Apstiprināšanas fāze
  3. Rakstīšanas fāze

Lasīt fāzi

Lasīšanas fāzē datu bāzes datu vērtības var nolasīt ar darījumu, bet rakstīšanas operācija vai atjauninājumi tiek piemēroti tikai vietējām datu kopijām, nevis faktiskajai datu bāzei.

Apstiprināšanas fāze

Validācijas fāzē dati tiek pārbaudīti, lai pārliecinātos, ka, veicot darījumu atjauninājumus datu bāzei, netiek pārkāpts serializējamība.

Rakstīšanas fāze

Rakstīšanas fāzē atjauninājumi tiek lietoti datu bāzei, ja validācija ir veiksmīga; atjauninājumi netiek lietoti, un darījums tiek atcelts.

Labas vienlaicīguma protokola raksturojums

Ideālam vienlaicīguma kontroles DBVS mehānismam ir šādi mērķi:

  • Jābūt izturīgam pret vietnes un komunikācijas kļūmēm.
  • Tas ļauj paralēli veikt darījumus, lai panāktu maksimālu vienlaicīgumu.
  • Tā uzglabāšanas mehānismiem un skaitļošanas metodēm jābūt pieticīgām, lai samazinātu pieskaitāmās izmaksas.
  • Tai jāpiemēro daži ierobežojumi darījumu atomu darbību struktūrai.

Kopsavilkums

  • Vienlaicīguma kontrole ir DBVS procedūra vienlaicīgu darbību pārvaldīšanai, nekonfliktējot savā starpā.
  • Zaudētie atjauninājumi, netīrā lasīšana, neatkārtojama lasīšana un nepareiza kopsavilkuma problēma ir problēmas, ar kurām saskaras vienlaicīgas kontroles trūkums.
  • Bloķēšanas, divfāžu, laika zīmoga un validācijas pamatā ir vienlaicīgas apstrādes protokolu veidi
  • Slēdzene var būt Shared (S) vai Exclusive (X)
  • Divfāžu bloķēšanas protokolam, kas ir pazīstams arī kā 2PL protokola nepieciešamais darījums, vajadzētu iegūt slēdzeni pēc tam, kad tas ir atbrīvojis vienu no savām slēdzenēm. Tam ir 2 fāzes, kas aug un samazinās.
  • Laika zīmoga algoritms izmanto laika zīmogu, lai sērijveidotu vienlaicīgu darījumu izpildi. Protokols kā laika zīmogu izmanto sistēmas laiku vai loģisko skaitīšanu .