Mis on hetktõmmise isoleerimine?

Snapshot isolation on tehingute töötlemise ja andmebaaside omadus, mis tagab, et kõik tehingus tehtud lugemised näevad sama andmebaasi “hetktõmmist”. See tähendab, et tehing kohustub päringut edukalt töötlema, kui selle värskendused ei ole vastuolus muude samaaegsete värskendustega. Snapshot isolation on mitme versiooni samaaegsuse juhtimisalgoritm, mis pakub isolatsioonitasemeid, mis väldivad samaaegsusega sageli esinevaid probleeme. Seda isoleerimist on rakendanud mitu erinevat struktureeritud päringukeele (SQL) serverit, mis töötavad minimaalsete serialiseerimisanomaaliatega. Snapshot-isolatsioonid ei taga aga täielikku seeriatavust serveris.

Paljud suuremad andmehaldussüsteemid sisaldavad vaikimisi isolatsioonitasemeid, mida ei saa jada ja sageli esineb serialiseerimise kõrvalekaldeid ilma hetktõmmise eraldamiseta. See võib põhjustada suurtes süsteemides iga päev arvukalt isoleerimisvigu, mis võivad põhjustada andmete rikkumist, eriti neid, mida leidub andmete laorakendustes. Põhjus, miks süsteem võib selles olekus töötada, on see, et madalamal isolatsioonitasemel töötavad rakendused võivad tõhusust parandada, kui tõsiseid tõrkeid ei esine. Snapshot-isolatsiooni kaasamine süsteemi vähendab neid kõrvalekaldeid ja – võttes arvesse tööaega ja esinevate vigade hulka – suurendab tõhusust veelgi.

Mõned andmebaasid pakuvad hetktõmmise isoleerimist, mitte täielikku jadamist, kuid seda tüüpi isoleerimist kasutavas andmebaasis võib esineda ka kõrvalekaldeid. Need kõrvalekalded võivad põhjustada andmete järjepidevuse rikkumisi, kuna järjepidevust säilitavad tehingud põimuvad või on paigutatud vahelduvatesse kihtidesse. Üks viis probleemi lahendamiseks ja selliste anomaaliate ärahoidmiseks on rakendustega manipuleerimine kunstlike lukkude ja vastuoluliste värskenduste kasutuselevõtuga, millele järgnes iga tehingupaari konfliktide analüüs. Teine viis nende kõrvalekallete lahendamiseks on aga muuta andmebaasisüsteemi samaaegsuse juhtimise algoritme, et tuvastada ja ennetada hetktõmmise isoleerimise kõrvalekaldeid käitusajal. Seda saab teha oluliste või suvaliste rakenduste jaoks, kuid see tagab isolatsiooni, mida saab järjestada.

Uuemad SQL-serverid on teatud rakenduste samaaegsuse suurendamiseks suutnud kasutusele võtta nii uued isolatsioonitasemed kui ka hetktõmmise isolatsiooni uued tasemed. Kui SQL-serveri varased versioonid kasutasid samaaegsuse alusena lukustamist, sõltub hetktõmmise isoleerimine reaversiooni täiustustest, mis on mõeldud jõudluse parandamiseks. See parandab seda jõudlust, kui esineb lugemis- või kirjutamisblokeeringu stsenaariume, vältides neid.