Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 28055|Svare: 3

[Kilde] SQL Server flerversjons samtidighetskontroll

[Kopier lenke]
Publisert på 28.01.2021 17:55:52 | | |
Databasekonsistens er også en av de viktige indikatorene for å måle DBMS-ytelse. For øyeblikket bruker de fleste kommersielle databaser (DB2, SQL Server) Two-Phase Locking (2PL)-protokollen for samtidighetskontroll, som sikrer serialisering av samtidig transaksjonsutførelse. Men 2PL må låse all data før den kan lese eller skrive til den. I blokkeringskompatibilitetsmatrisen er S-låser (Share Locks) og X-låser (eksklusive låser) inkompatible, så når transaksjon 1 utfører en leseoperasjon på data A (pluss en S-lås), og transaksjon 2 ønsker å skrive til dataene (legge til en X-lås), må transaksjon 2 vente til transaksjon 1 frigjør S-låsen på data A før den går videre. Multi-Version Concurrency Control (MVCC) løser dette problemet godt. I et flerversjonssystem genererer hver skrivedata en ny versjon, og leseoperasjonen kan lese den riktige versjonen etter behov, slik at lese- og skriveoperasjonene ikke blokkerer hverandre. MVCC øker samtidighet, men det medfører også lagringsoverhead ved å vedlikeholde flere versjoner.

Microsoft SQL Server-databasemotoren introduserer en ny implementering av det eksisterende transaksjonsisolasjonsnivået – committed reads, som gir snapshots på setningsnivå ved bruk av radversjonering. SQL Server-databasemotoren introduserer også et nytt nivå av transaksjonsisolasjon – snapshots for å gi transaksjonsnivå-snapshots som også bruker radversjonering.

Å sette READ_COMMITTED_SNAPSHOT database-alternativet til ON aktiverer dedikert leseisolasjon ved hjelp av radversjonering. Å sette ALLOW_SNAPSHOT_ISOLATION database-alternativet til PÅ aktiverer snapshot-isolasjon. Når et av alternativene er aktivert for databasen, opprettholder databasemotoren versjonen av hver rad som endres. Hver gang en transaksjon endrer en rad, kopieres bildet av raden før endringen til en side i versjonsbutikken. En versjonslagring er en samling datasider i tempdb. Hvis det finnes flere transaksjonsmodifikasjonslinjer, vil flere versjoner av den linjen være koblet sammen i en versjonskjede. En leseoperasjon ved bruk av radversjonering vil hente den siste versjonen av hver rad som ble committet ved transaksjons- eller setningsstart.

Applikasjoner skrevet for SQL Server 2008 eller nye til SQL Server implementerer isolasjon av lese-commits ved å bruke radversjonering ved å spesifisere transaksjonsisolasjonsnivået for lese-commits når READ_COMMITTED_SNAPSHOT-databasealternativet er PÅ. Alle lesninger vil se på radversjonen som ble gjort da uttalelsen startet. Dette vil gi et statement-nivå øyeblikksbilde av dataene.

Applikasjoner skrevet for SQL Server vil implementere snapshot-isolasjon ved å spesifisere snapshot-transaksjonsisolasjonsnivået når ALLOW_SNAPSHOT_ISOLATION-databasealternativet er PÅ. Alle lesninger i en snapshot-transaksjon vil se på versjonen av raden som ble committet da transaksjonen startet. Dette vil gi et transaksjonsnivå-øyeblikksbilde av dataene.

For transaksjoner som bruker radbaserte isolasjonsnivåer, ber ikke reads om delte låser på dataene. Dette betyr at lesere som bruker radversjonering ikke hindrer andre lesere eller forfattere i å få tilgang til de samme dataene. På samme måte står ikke forfatteren i veien for leseren. Men forfatterne kommer i veien for hverandre (selv når de kjører på et nivå av isolasjon basert på radversjonering). To skriveoperasjoner kan ikke endre de samme dataene samtidig.

Snapshot Isolation-funksjonen utvider låserammeverket i SQL Server 2008 ved å gjøre det mulig for applikasjoner å se verdier før eventuelle dataendringer skjer. Dette forhindrer at applikasjonen blir låst, samtidig som den leverer virkelig innsendte data. SQL Server 2008s Read Committed Snapshot krever at en databaseadministrator aktiveres, noe som gjør det mulig å lese data via skrivebeskyttede transaksjoner. Så SIs samtidige kontroll over skrivebeskyttede transaksjoner er veldig god, men det er uklart om dette gjelder for oppdateringstransaksjoner. Det er mer ugunstig for langvarige oppdateringstransaksjoner å konkurrere med kortsiktige høynivåtransaksjoner. Hvis en transaksjon på tvers av databaser forsøker å bruke Snapshot Isolation (SI)-standarden, i stedet for at alle databaser er satt, mislykkes transaksjonen. Dette skaper utvilsomt visse hindringer for skalerbarhet. Det virker som Microsoft fortsatt har en lang vei å gå for å oppnå sin egen SI som er sterkere enn SQL 92-spesifikasjonen.

Før noen endring, lag en kopi av forrige versjon, og alle påfølgende leseoperasjoner vil lese den kopierte versjonen, og endringen vil skape en ny versjon. På denne måten,Lese- og skriveoperasjoner blokkerer ikke hverandre. Fordelen med å bruke denne linjeversjoneringsmekanismen er at samtidigheten til programmet er relativt høy, men ulempen er at selv om brukeren ikke leser skitne data, kan det være en dataverdi som endres og er i ferd med å utløpe. Hvis du endrer dataene basert på denne utløpte verdien, vil det føre til en logisk feil

SQL-kommandoer:


Referanselenker:

Innloggingen med hyperkoblingen er synlig.
Innloggingen med hyperkoblingen er synlig.
Innloggingen med hyperkoblingen er synlig.
Innloggingen med hyperkoblingen er synlig.
Innloggingen med hyperkoblingen er synlig.
Innloggingen med hyperkoblingen er synlig.





Foregående:Elasticsearch (ES) replikerer kloneindeksen
Neste:CubaBase10.5 veiledning
Publisert på 29.01.2021 09:13:40 |
Xuexi
Publisert på 15.07.2021 20:37:16 |
Jeg vil ha det, jeg vil ha det, jeg vil ha det, jeg vil ha detønske
Publisert på 12.12.2021 01:22:12 |
Jeg vil ha det, jeg vil ha det, jeg vil ha det
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com