See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 28055|Vastuse: 3

[Allikas] SQL Server mitme versiooni samaaegsuse kontroll

[Kopeeri link]
Postitatud 28.01.2021 17:55:52 | | |
Andmebaasi järjepidevus on samuti üks olulisi näitajaid DBMS-i jõudluse mõõtmisel. Praegu kasutavad enamik kommertsandmebaase (DB2, SQL Server) samaaegsuse kontrolliks kahefaasilise lukustamise (2PL) protokolli, mis tagab samaaegse tehingu käivitamise serialiseerimise. Kuid 2PL peab enne lugemist või kirjutamist lukustama kõik andmed. Blokeerimise ühilduvuse maatriksis on S-lukud (jagamislukud) ja X lukud (eksklusiivsed lukud) omavahel sobimatud, seega kui tehing 1 teostab lugemisoperatsiooni andmetele A (pluss S-lukk) ja tehing 2 soovib andmetesse kirjutada (lisada X-lukk), peab tehing 2 ootama, kuni tehing 1 vabastab S-luku andmele A, enne kui jätkab. Multi-Version Concurrency Control (MVCC) lahendab selle probleemi hästi. Mitmeversioonilises süsteemis genereerib iga kirjutamisinfo uue versiooni ning lugemisoperatsioon saab vajadusel sobivat versiooni lugeda, nii et lugemis- ja kirjutamistoimingud ei blokeeri üksteist. MVCC suurendab samaaegsust, kuid toob kaasa ka salvestuskoormuse, mis kaasneb mitme versiooni haldamisega.

Microsoft SQL Server andmebaasimootor tutvustab olemasoleva tehinguisolatsiooni taseme uut rakendust – committed reads, mis pakuvad lausetaseme hetktõmmisi reaversioonide abil. SQL Serveri andmebaasimootor toob sisse ka uue tehingute isoleerimise taseme – hetktõmmised, mis pakuvad tehingutasemel hetktõmmisi ja kasutavad samuti reaversiooni.

READ_COMMITTED_SNAPSHOT andmebaasi valiku seadistamine ON võimaldab pühendunud lugemisisolatsiooni reaversioonide abil. ALLOW_SNAPSHOT_ISOLATION andmebaasi valiku seadistamine SISSE võimaldab hetkepildi isoleerimist. Kui üks neist valikutest on andmebaasis lubatud, hoiab andmebaasimootor iga muudetud rea versiooni. Iga kord, kui tehing muudab rida, kopeeritakse rea pilt enne muudatust versioonipoe lehele. Versioonihoidja on tempdb-s andmelehtede kogum. Kui on mitu tehingu muutmise rida, on selle rea mitu versiooni seotud versiooniahelasse. Read-versiooni kasutamine lugemistoiming taastab iga rea viimase versiooni, mis tehti tehingu või lause alguses.

SQL Server 2008 jaoks kirjutatud või SQL Serveris uued rakendused rakendavad lugemiscommitide isoleerimist reaversioonide abil, määrates lugemiscommitide tehinguisolatsiooni taseme, kui READ_COMMITTED_SNAPSHOT andmebaasi valik on sisse lülitatud. Kõik lugemised vaatavad rea versiooni, mis oli tehtud avalduse alguses. See annab andmetest avalduse tasemel hetkepildi.

SQL Serveri jaoks kirjutatud rakendused rakendavad hetktõmmise isoleerimist, määrates hetktõmmise tehingu isoleerimise taseme, kui ALLOW_SNAPSHOT_ISOLATION andmebaasi valik on sisse lülitatud. Kõik hetktõmmise tehingu lugemised vaatavad rea versiooni, mis tehingu alguses kinnitati. See annab tehingutasemel ülevaate andmetest.

Tehingute puhul, mis kasutavad reapõhiseid isolatsioonitasemeid, ei taotle lugemised andmetele jagatud lukustusi. See tähendab, et read-versiooni kasutavad lugejad ei takista teistel lugejatel või kirjutajatel samadele andmetele ligipääsemast. Samamoodi ei sega kirjanik lugejat. Kuid kirjanikud segavad üksteist (isegi siis, kui nad töötavad teatud isolatsioonitasemel, mis põhineb ridade versioonil). Kaks kirjutamistoimingut ei saa samaaegselt sama andmestikku muuta.

Snapshot Isolation funktsioon laiendab SQL Server 2008 lukustusraamistikku, võimaldades rakendustel väärtusi vaadata enne andmete muutmist. See takistab rakenduse lukustamist, pakkudes samal ajal tõeliselt esitatud andmeid. SQL Server 2008 Read Committed Snapshot nõuab andmebaasi administraatori aktiveerimist, võimaldades andmeid lugeda ainult lugemise tehingutega. Seega on SI samaaegne kontroll ainult lugemispõhiste tehingute puhul väga hea, kuid pole selge, kas see kehtib uuendustehingute puhul. Pikaajalised uuendustehingud ei suuda konkureerida lühiajaliste kõrgetasemeliste tehingutega. Kui tehing andmebaastevaheline püüab kasutada Snapshot Isolation (SI) standardit, mitte kõiki seatud andmebaase, ebaõnnestub tehing. See tekitab kahtlemata teatud takistusi skaleeritavusele. Tundub, et Microsoftil on veel pikk tee minna, et saavutada oma tugevam SI kui SQL 92 spetsifikatsioon.

Enne muudatusi tee eelmisest versioonist koopia ning kõik järgnevad lugemistoimingud loevad kopeeritud versiooni ja muudatus loob uue versiooni. Nii,Lugemis- ja kirjutamistoimingud ei blokeeri üksteist. Selle reaversiooni mehhanismi eeliseks on programmi paralleelsus suhteliselt suur, kuid puuduseks on see, et kuigi kasutaja ei loe musta andmet, võib see olla andmeväärtus, mida muudetakse ja mis aegub. Kui muudate andmeid selle aegunud väärtuse põhjal, tekib loogiline viga

SQL-käsud:


Viitelingid:

Hüperlingi sisselogimine on nähtav.
Hüperlingi sisselogimine on nähtav.
Hüperlingi sisselogimine on nähtav.
Hüperlingi sisselogimine on nähtav.
Hüperlingi sisselogimine on nähtav.
Hüperlingi sisselogimine on nähtav.





Eelmine:Elasticsearch (ES) replitseerib kloonide indeksi
Järgmine:cubase10.5 õpetus
Postitatud 29.01.2021 09:13:40 |
xuexi
Postitatud 15.07.2021 20:37:16 |
Ma tahan seda, ma tahan seda, ma tahan seda, ma tahan sedasoovima
Postitatud 12.12.2021 01:22:12 |
Ma tahan seda, ma tahan seda, ma tahan seda
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com