2013 m. vasario 10 d., sekmadienis

Transactions and locks


Transactions and locks

Transakcija – tai seka operacijų, vykdomų kaip vienas vienetas. Transakcija turi keturias savybes:

  • Atomicity – vykdomi kaip vienas vienetas
  • Consistency – kai transakcija baigta, duomenys turi būti nuoseklūs
  • Isolation – pakeitimai, daromi transakcijos, turi būti izoliuoti nuo kitų operacijų.
  • Durability  - pakeitimai turi būti ilgalaikiai

Visi transakcijų pakeitimai rašomi į logą, kad esant reikalui būtų galima atstatyti pradinius duomenis.

Lock tipai:

  • Read
  • Write

Concurency control:
  • Pessimistic
  • Optimistic

Type of locks: (10-29,10-30)

Shared(S) – skaitymo operacijoms
Update(U) – resursams, kurie gali būti atnaujinami
Exclusive (X) – naudojami duomenų modifikavimo operacijoms, tokioms kaip INSERT, UPDATE arba DELETE
Intent – naudojama norint įkurti lock hierarchiją
Schema – naudojama, kai opracija priklauso schemai, kurioje yra naudojama lentelė
Bulk Update (BU) – naudojama, kai bulk kopijuoja duomenis į lentelę ir TABLOCK hint naudojamas.
Key-range – saugo tam tikrą rėžį eilučių nuo skaitymo, kol vykdoma transakcija.

Lock compatibility:


Transaction isolation level:
  • Read uncommitted
  • Read committed (default)
  • Repeateble read
  • Serializable - visas kitas transakcijas sustabdo ir vykdo skaičiavimus. Laikinai duomenys kitiems atnaujinimams ir įterpimams neprieinami.
  • Snapshot

Lock escalation – lock paaštrėjimas – t.y. procesas, konvertuojantis ribojimų grandinėlę ir taip padidina konkurenciją tarp resursų (?)

Jeigu būna deadlockai, tai SQL serveris automatiškai nutraukia vieną transakciją, o kitai leidžia tęsti darbą.

Dynamic management view:

SELECT * FROM sys.dm_tran_locks

Komentarų nėra:

Rašyti komentarą