Vezi sursa
Noțiunea de tranzacție. tranzacții implicite și explicite.
Tranzacție - o unitate logică de lucru în baza de date, precum și unitatea de recuperare a bazei de date failover. Când se angajeze modificări în baza de date garantează conservarea sau orice modificări sau niciuna. Mai mult decât atât, efectuat toate regulile și controalele pentru a asigura integritatea datelor.
Baza de date tranzacții au proprietăți abreviate numit ACID (atomicitate, coerență, izolare, durabilitate).
- Indivizibilă (atomicitate). Tranzacția se efectuează efectuată fie complet, fie că nu.
- Consistența (consistență). Tranzacția ia bazei de date de la o stare consistentă la alta.
- Izolarea (izolare). Rezultatele tranzacției sunt puse la dispoziția altor operațiuni numai după fixarea acestuia.
- Durată (durabilitate). După ce comit devin permanente schimbări.
Toate comenzile executate de către utilizatori pe server sunt făcute în corpul tranzacției. Cu toate acestea, există două abordări instrucțiunilor limitelor de tranzacție în fluxul de instrucțiuni - tranzacția explicită și implicită.
tranzacție Explicit. Implicit, fiecare comandă este executată ca o tranzacție separată. Utilizatorul poate combina mai multe comenzi într-o singură tranzacție, specificând în mod clar începutul și sfârșitul.
tranzacție implicită. Nu există nici un operator de începere a tranzacției. O tranzacție începe cu începerea unei sesiuni de lucru cu baza de date. Finalizat tranzacția pentru următoarele evenimente:
- Operatorul configurat în mod explicit finalizarea unei tranzacții - derulare înapoi și să se angajeze
- declaraţie DDL
- Deconectare.
Imediat după tranzacție este implicit începe o nouă tranzacție.
niveluri de izolare de tranzacție, Oracle diferențe de implementare din altă bază de date.
Probleme de organizare de funcționare în paralel:
Prin urmare defini patru scenarii de interferență mai multe tranzacții în ceea ce privește manipularea acelorași date.
Caracteristicile de realizare a tranzacțiilor în Oracle și MS SQL Server
Operatorii de management general de tranzacție.
- tranzacție implicită. Tranzacția este în mod automat a citit sau de la începutul sesiunii sau după încheierea tranzacției anterioare.
- Tipuri de tranzacții - Citire, Numai citire. Tranzacție Numai citire nivel de citire de izolare serializabil echivalent. O astfel de tranzacție vede numai modificările comise la momentul de la începuturile sale, dar în acest mod nu este permisă insera, actualiza și șterge datele (alte sesiuni se pot schimba datele, dar tranzacția este read-only - nr).
- Niveluri de izolare - Citiți Angajate, Serializable
- Mecanismul multiversioning. Caracteristici cheie
- Citește consistență pentru interogări. Interogările dau rezultate consistente la începutul punerii în aplicare a acestora. date variabile este plasată în zona segmentului rollback.
- Non-blocare cereri. Interogările care modifică datele fără a bloca interogările care citesc date și cereri de citire nu blochează în schimbare, așa cum este cazul în alte baze de date.
- tranzacții de control declarații
- SET TRANSACTION
- COMMIT, ROLLBACK
- SAVEPOINT
- tranzacție Explicit. Fiecare declarație este executată în tranzacție, dacă aceasta nu este în unitatea începe tran - comite (derulare înapoi)
- Prezența tranzacțiilor imbricate. exemplu
- SET TRANSACTION
- BEGIN TRANSACTION
- COMMIT, ROLLBACK
- SAVEPOINT
Conceptul de încuietori. Principalele tipuri de încuietori.
Lock - un mecanism utilizat pentru a gestiona accesul concurent la o resursă partajată. Blocarea se produce atunci când unul deține o resursă sesiune solicitată de o altă sesiune. Ca urmare, solicită sesiunea va fi blocat - it „se blochează“, până atunci, în timp ce țineți sesiunea nu se închide resursa.
Optimist de blocare (blocare optimistă) - strategie de blocare în date CCD care conține o secțiune de intrare variabilă este blocată numai în momentul schimbărilor în înregistrarea programului, dar nu al utilizatorului.
Pesimist de blocare (blocare pesimist) - strategie de blocare în date CCD care o secțiune care conține o înregistrare variabilă este blocat în orice moment face modificări la intrarea de către utilizator și nu este disponibil pentru editare de către alți utilizatori.
Feature mecanism de blocare Oracle - blocul de date nu sunt stocate ca o singură resursă, și a conținut direct în blocurile de date. Acest lucru evită probleme, cum ar fi escaladarea de blocare. Mai jos sunt listate cinci clase majore de încuietori în Oracle. Primele trei - frecvente (utilizate în toate bazele de date Oracle), iar celelalte două - numai în OPS (Oracle Parallel Server - Server paralel).
Lacate DML (DML încuietori). DML este limbaj de manipulare a datelor (Data Manipulation Language), care este, SELECT, INSERT, UPDATE și DELETE ,,. Pentru DML încuietori includ, de exemplu, șir de date de blocare sau la blocare nivel de masă, care afectează toate rândurile din tabel.
Lacate DDL (DDL ecluze). DDL este Data Definition Language (Definiție date despre limbă), adică, declarații CREATE, ALTER, și așa mai departe. Blocarea DDL protejează definirea structurilor obiect.
Blocarea internă (încuietori interne) și un zăvor (zăvoare). Broaștele - un simplu instrumente de nivel scăzut pentru a asigura coerența aplicațiilor. Broaștele sunt de obicei solicitate de sistemul în modul de așteptare. Acest lucru înseamnă că, în cazul în care dispozitivul de blocare nu poate fi stabilită, sesiunea care solicită pauze pentru o perioadă scurtă de timp, și apoi încearcă să repete operația. Alte file pot fi solicitate on-line, care este, procesul va fi de a face altceva, nu de așteptare pentru o oportunitate de a seta dispozitivul de blocare. Broaștele sunt alocate în mod aleatoriu. Interblocari - un mijloc mai sofisticate de prioritate de acces, acestea permit solicitant „intra in linie“, în anticiparea eliberarea resursei. declic Solicitarea imediat notificată cu privire la eliberarea resursei. În cazul în care elementul de interblocare complet blocat solicitantă.
Blocarea Distributed (încuietori distribuite). Aceste încuietori sunt folosite pentru a se potrivi cu resursele mașinii OPS serverul din cluster. Distribuit set de blocare de instanțe de baze de date, mai degrabă decât de tranzacții individuale.
Blocarea de gestionare a memoriei cache paralel (PCM - Broaște de management al Cache paralele). O astfel de blocare a proteja blocuri de date în memoria cache, atunci când sunt utilizate mai multe instanțe de baze de date.
SQL Server suportă trei tipuri de bază de încuietori:
Blocare partajată - blocare partajată care este utilizat atunci când datele citite de operare. Este permis să citească date de o altă tranzacție, dar este interzis schimbările de date.
Exclusiv Lock - o blocare exclusivă care se aplică atunci când se schimbă datele. Această blocare este complet împiedică accesul la datele de alte tranzacții.
Actualizare de blocare - actualizare de blocare, care este intermediară între blocare partajată și exclusivă. Folosit atunci când o tranzacție dorește să actualizeze datele la un moment data viitoare, dar nu acum, și când vine acel moment, nu vrea să aștepte o altă tranzacție. În acest caz, alte tranzacții sunt permise pentru a seta partajate blochează, dar nu permite să se stabilească un monopol.
Locks poate fi setat la trei niveluri -
- nivelul liniilor - nivelul implicit.
- la nivel de pagină - este utilizat pentru o utilizare mai eficientă a resurselor și, în cazul multor rânduri cu această blocare de pe aceasta pagina.
- Nivelul de masă - utilizate în operațiuni de peste masă, iar în cazul escaladării de blocare.
impasuri
Este posibil ca două tranzacții blochează reciproc, astfel încât să continue operațiunea nu este posibilă fără închidere forțată a uneia dintre tranzacțiile.
exemplu: