Što je izolacija snimka?

Izolacija snimka je svojstvo u obradi transakcije i baze podataka koje jamči da sva čitanja izvršena u transakciji vide istu “snimku” baze podataka. To znači da će se transakcija obvezati na uspješnu obradu zahtjeva ako njezina ažuriranja nisu u sukobu s bilo kojim drugim istodobnim ažuriranjima. Izolacija snimka je kontrolni algoritam za istodobnost u više verzija koji osigurava razine izolacije koje izbjegavaju probleme koji se obično javljaju s istodobnošću. Ovu izolaciju implementiralo je nekoliko različitih poslužitelja jezika strukturiranih upita (SQL), koji rade s minimalnim količinama anomalija serijalizacije. Međutim, izolacije snimka neće jamčiti potpunu serijalabilnost na poslužitelju.

Mnogi glavni sustavi za upravljanje podacima sadrže zadane razine izolacije koje se ne mogu serijalizirati i često se susreću s anomalijama serijalizacije bez izolacije snimka. To može uzrokovati da veliki sustavi svaki dan imaju brojne pojave izolacijskih pogrešaka, što može dovesti do oštećenja podataka, posebno onih koji se nalaze u aplikacijama skladišta podataka. Razlog zašto bi sustav mogao raditi u ovom stanju je taj što aplikacije koje rade na nižim razinama izolacije mogu poboljšati učinkovitost ako se ne pojave ozbiljne pogreške. Uključivanje izolacije brzih snimaka u sustav smanjuje te anomalije i — kada se uzme u obzir vrijeme rada i količina pogrešaka koje se javljaju — još više povećava učinkovitost.

Neke baze podataka nude izolaciju brzih snimaka za razliku od pune serializabilnosti, ali postoje i anomalije koje se mogu pojaviti unutar baze podataka koja koristi ovu vrstu izolacije. Ove anomalije mogu dovesti do kršenja konzistentnosti podataka jer se transakcije koje održavaju konzistentnost isprepliću ili su raspoređene u izmjeničnim slojevima. Jedan od načina rješavanja problema i sprječavanja ovakvih anomalija je manipuliranje aplikacijama uvođenjem umjetnih zaključavanja i konfliktnih ažuriranja, nakon čega je slijedila analiza sukoba između svakog para transakcija. Međutim, drugačiji način rješavanja ovih anomalija je modificiranje algoritama kontrole istodobnosti sustava baze podataka kako bi se izvršila automatska detekcija i prevencija anomalija izolacije snimka tijekom izvođenja. To se može učiniti za važne ili proizvoljne aplikacije, ali osigurava izolaciju koja se može serijalizirati.

Noviji SQL poslužitelji uspjeli su uvesti nove razine izolacije, kao i nove razine izolacije snimaka za poboljšanje istodobnosti u određenim aplikacijama. Gdje su rane verzije SQL poslužitelja koristile zaključavanje kao osnovu za istodobnost, izolacija snapshota ovisi o poboljšanjima verzije redaka koja su namijenjena poboljšanju performansi. Poboljšava ovu izvedbu kada naiđe na scenarije s blokiranjem čitanja ili pisanja izbjegavajući ih.