Citește instantaneu închis vs. imagine instantanee

Cea mai importantă diferență dintre aceste două niveluri optimiste de izolare este aceea că tranzacția instantanee poate provoca conflicte de actualizare atunci când procesul scanează aceleași date în timpul executării tranzacției și nu este blocat. În contrast, nivelul de izolare a instantaneului de citire a angajamentului nu folosește propriul XSN atunci când selectează versiuni de linie. De fiecare dată când începe operatorul, această tranzacție citește ultimul XSN creat pentru această instanță de către sistemul de baze de date și selectează rândul cu acest număr.







O altă diferență constă în faptul că nivelul de izolare instantanee permis de citire permite altor tranzacții să efectueze modificări de date înainte de finalizarea tranzacției de control al versiunii rând. Acest lucru poate duce la un conflict dacă cealaltă tranzacție modifică datele din intervalul în care tranzacția de control al versiunii rândului citește și apoi încearcă să efectueze operația de scriere corespunzătoare. (Pentru o aplicație bazată pe nivelul de izolare a instantaneului, sistemul verifică posibilitatea unui conflict și trimite un mesaj de eroare adecvat.)

Accesul competitiv în sistemele de baze de date multi-utilizator poate duce la unele efecte negative, cum ar fi citirea datelor inexistente sau pierderea schimbărilor de date. Motorul bazei de date, ca toate celelalte DBMS-uri, rezolvă aceste probleme atunci când utilizează tranzacții. Tranzacția este o secvență de instrucțiuni Transact-SQL care sunt combinate împreună. Toți operatorii dintr-o tranzacție constituie o unitate atomică. Aceasta înseamnă că toți operatorii sunt executați sau, în caz de erori, toate operațiile sunt anulate.







Pentru a implementa tranzacțiile, se folosește mecanismul de blocare. Sarcina de blocare este de a împiedica modificarea obiectelor blocate prin alte tranzacții. Blocarea are următoarele aspecte: modul de blocare, granularitatea blocării și durata blocării. Modul de blocare definește diferite tipuri de încuietori ale căror alegere depinde de resursele pe care doriți să le blocați. Durata blocării determină perioada de timp în care resursele vor fi blocate.

Motorul bazei de date oferă un mecanism numit declanșator, care, printre altele, suportă constrângeri comune de integritate. Acest mecanism este discutat în detaliu în capitolul următor.

j Exercițiul 13.1

Care este scopul tranzacțiilor?

Exercițiul 13.2

Care este diferența dintre tranzacțiile locale și distribuite?

Care este diferența dintre un tip de tranzacție implicit și explicit?

Ce tipuri de încuietori sunt compatibile cu blocarea exclusivă? j Exercitarea 13.5

Cum puteți verifica succesul fiecărei instrucțiuni Transact-SQL?

j Exercițiul 13.6

Unde ar trebui să utilizați instrucțiunea de salvare a tranzacției? j Exercițiul 13.7

Explicați diferența dintre blocarea la nivelul rândului și la nivelul paginii.

j Exercitarea 13.8 '.

Poate utilizatorul să afecteze în mod explicit comportamentul sistemului când se blochează?

j Exercitarea 13.9

Care este diferența dintre tipurile de bază de blocare (partajate și exclusive) și blocarea cu intenții?

j Exercițiul 13.10

Ce crește blocarea?

Explicați diferența dintre nivelele de izolare nerecunoscute și serializabile.

Exercițiul 13.12

Ce este o blocare reciprocă?

Ce proces este folosit ca "victimă" într-o situație de blocare reciprocă? Poate utilizatorul să influențeze procesul decizional al sistemului?







Trimiteți-le prietenilor: