Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 28055|Vastaus: 3

[Lähde] SQL Server -moniversion rinnakkaisuudenhallinta

[Kopioi linkki]
Julkaistu 28.1.2021 17.55.52 | | |
Tietokannan yhdenmukaisuus on myös yksi tärkeimmistä mittareista DBMS:n suorituskyvyn mittaamisessa. Tällä hetkellä useimmat kaupalliset tietokannat (DB2, SQL Server) käyttävät Two-Phase Locking (2PL) -protokollaa rinnakkaislukkojen hallintaan, mikä varmistaa samanaikaisen transaktion suorittamisen sarjallistamisen. Kuitenkin 2PL:n täytyy lukita kaikki tiedot ennen kuin se voi lukea tai kirjoittaa sille. Estoyhteensopivuusmatriisissa S-lukot (Share Locks) ja X-lukot (Exclusive Locks) ovat yhteensopimattomia, joten kun transaktio 1 suorittaa lukutoiminnon datalle A (plus S-lukko) ja transaktio 2 haluaa kirjoittaa dataan (lisätä X-lukon), transaktio 2 joutuu odottamaan, että transaktio 1 vapauttaa S-lukon datassa A ennen kuin etenee. Multi-Version Concurrency Control (MVCC) ratkaisee tämän ongelman hyvin. Moniversiojärjestelmässä jokainen kirjoitusdata tuottaa uuden version, ja lukutoiminto voi lukea sopivan version tarpeen mukaan, joten luku- ja kirjoitusoperaatiot eivät estä toisiaan. MVCC lisää samanaikaisuutta, mutta tuo myös mukanaan tallennuskuorman useiden versioiden ylläpidosta.

Microsoft SQL Server -tietokantamoottori esittelee uuden toteutuksen olemassa olevasta transaktioiden eristystasosta – sitoutuneista lukemistasoista, jotka tarjoavat lausetason snapshotit riviversioinnilla. SQL Server -tietokantamoottori tuo myös uuden tason transaktioiden eristyksessä – snapshotit, jotka tarjoavat transaktiotason snapshotteja, jotka käyttävät myös riviversiointia.

Asettamalla READ_COMMITTED_SNAPSHOT tietokantavaihtoehdon PÄÄLLE mahdollistaa sitoutuneen lukueristyksen riviversioinnilla. Asettamalla ALLOW_SNAPSHOT_ISOLATION tietokanta-asetuksen PÄÄLLE mahdollistaa snapshot-eristyksen. Kun kumpikin vaihtoehto on käytössä tietokannalle, tietokantamoottori ylläpitää kunkin rivin muokatun version. Aina kun transaktio muuttaa riveä, ennen muutosta oleva rivin kuva kopioidaan versiokaupan sivulle. Versiotallennus on kokoelma datasivuja tempdb:ssä. Jos transaktioiden muokkausrivejä on useita, kyseisen rivin useita versioita linkitetään versioketjuun. Lukutoiminto, jossa käytetään riviversiota, hakee viimeisen version jokaisesta rivistä, joka oli sitoutunut transaktion tai lauseen alkaessa.

SQL Server 2008:lle kirjoitetut tai uudet SQL Serverille tarkoitetut sovellukset toteuttavat lukukomittien eristämisen riviversioinnilla määrittämällä lukucommittien transaktion eristystaso, kun READ_COMMITTED_SNAPSHOT tietokantavaihtoehto on päällä. Kaikki lukemat katsovat rivin version, joka oli sitoutunut lauseen alkaessa. Tämä antaa lausetasoisen tilannekuvan datasta.

SQL Serverille kirjoitetut sovellukset toteuttavat snapshot-eristyksen määrittämällä snapshot-transaktion eristystason, kun ALLOW_SNAPSHOT_ISOLATION tietokantavaihtoehto on päällä. Kaikki snapshot-transaktion lukemat katsovat sitä versiota rivistä, joka oli sitoutunut tapahtuman alussa. Tämä tarjoaa transaktiotason tilannekuvan datasta.

Niissä transaktioissa, jotka käyttävät rivipohjaisia eristystasoja, lukemiset eivät pyydä jaettuja lukkoja datalle. Tämä tarkoittaa, että riviversioita käyttävät lukijat eivät estä muita lukijoita tai kirjoittajia pääsemästä samoihin tietoihin. Samoin kirjoittaja ei häiritse lukijaa. Kuitenkin kirjoittajat tulevat toistensa tielle (vaikka ne olisivat eristyksissä riviversioiden takia). Kaksi kirjoitusoperaatiota eivät voi muokata samaa dataa samanaikaisesti.

Snapshot Isolation -ominaisuus laajentaa SQL Server 2008:n lukituskehystä mahdollistamalla sovellusten arvojen tarkastelun ennen kuin datan muutoksia tapahtuu. Tämä estää sovelluksen lukitumisen, mutta silti antaa aidosti lähetetyt tiedot. SQL Server 2008:n Read Committed Snapshot vaatii tietokantaylläpitäjän aktivoinnin, jolloin data voidaan lukea vain luku -transaktioilla. SI:n samanaikainen hallinta vain luku -tapahtumissa on erittäin hyvä, mutta ei ole selvää, onko tämä tilanne päivitystapahtumissa. On epäedullisempaa pitkäkestoisten päivitystransaktioiden kilpaileminen lyhyen aikavälin korkean tason transaktioiden kanssa. Jos transaktio tietokantojen välillä yrittää käyttää Snapshot Isolation (SI) -standardia sen sijaan, että kaikki tietokannat asetettaisiin, transaktio epäonnistuu. Tämä luo epäilemättä tiettyjä esteitä skaalautuvuudelle. Vaikuttaa siltä, että Microsoftilla on vielä pitkä matka saavuttaakseen oman SI:n, joka on vahvempi kuin SQL 92 -määrittely.

Ennen muokkausta tehdään kopio edellisestä versiosta, ja kaikki myöhemmät lukutoiminnot lukevat kopioidun version, ja muokkaus luo uuden version. Näin,Luku- ja kirjoitustoiminnot eivät estä toisiaan. Tämän riviversiointimekanismin etuna on, että ohjelman samanaikaisuus on suhteellisen suuri, mutta haittapuolena on, että vaikka käyttäjä ei lue likaista dataa, kyseessä voi olla muokattava data-arvo, joka on vanhentumassa. Jos muokkaat dataa tämän vanhentuneen arvon perusteella, se aiheuttaa loogisen virheen

SQL-komennot:


Viitelinkit:

Hyperlinkin kirjautuminen on näkyvissä.
Hyperlinkin kirjautuminen on näkyvissä.
Hyperlinkin kirjautuminen on näkyvissä.
Hyperlinkin kirjautuminen on näkyvissä.
Hyperlinkin kirjautuminen on näkyvissä.
Hyperlinkin kirjautuminen on näkyvissä.





Edellinen:Elasticsearch (ES) replikoi klooniindeksin
Seuraava:cubase10.5 -opas
Julkaistu 29.1.2021 9.13.40 |
xuexi
Julkaistu 15.7.2021 20.37.16 |
Haluan sen, haluan sen, haluan sen, haluan senhaluta
Julkaistu 12.12.2021 1.22.12 |
Haluan sen, haluan sen, haluan sen
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com