Izolyatsiya darajalari Izolyatsiya darajalaridan foydalanib, ma’lumotlar bazasiga parallel murojaatda qaysi muammolar yuzaga kelishi mumkinligini va qaysi birining oldini olish kerakligini belgilash mumkin. Database Engine komponenti ma`lumotlarga parallel murojaat qilishni boshqaradigan quyidagi beshta izolyatsiya darajasini qo`llab-quvvatlaydi:
READ UNCOMMITTED
READ COMMITTED
REPEATABLE READ
SERIALIZABLE
SNAPSHOT
Izolyasiya darajasi SET instruksiyasining TRANSACTION ISOLATION LEVEL parametri orqali o’rnatiladi
READ UNCOMMITTED izolyasiya darajasi READ UNCOMMITTED izolyatsiya darajasi tranzaktsiyalar o'rtasida eng oddiy izolyatsiyani ta'minlaydi, chunki u o`qishni boshqa operasiyalardan umuman izolyasiya qilmaydi. Tranzaksiya ushbu izolyatsiya darajasida yozuvni olganda, u hech qanday qulflanmaydi va mavjud bo'lgan qulflarni inobatga olmaydi. Bunday operasiya tomonidan o`qilgan ma`lumotlar nomutanosib bo’lishi mumkin. Ya’ni tranzaksiya boshqa bir faol tranzaksiya tomonidan yangilangan ma`lumotlarni o`qiydi. Agar u faol tranzaksiya keyinchalik qilgan o’zgarishlarini bekor qilsa, unda birinchi tranzaksiya hech qachon mavjud bo'lmagan ma`lumotlarni o`qigan bo’ladi.
READ UNCOMMITTED izolyatsiya darajasi 3 ta amalga ruxsat beradi: “iflos o`qishlar”(dirty read), takrorlanmaydigan o`qishlar va fantomlar.
READ UNCOMMITTED izolyatsiya darajasi faqat ma`lumotlarning aniqligi muhim bo'lmagan hollarda yoki ma`lumotlar kamdan-kam o`zgartirilganda foydalanilishi lozim.
Misol: 2 ta tranzaksiya bitta yozuvni bir vaqtning o’zida o’zgartirmoqda. “Tranzaksiya 1” o’zgarishi “Tranzaksiya 2” tomonidan bekor qilinadi. 2 ta tranzaksiya boshlanishidan oldin “Value” qiymati “1” ga teng bo’lsin.
Tranzaksiya 1
Tranzaksiya 2
UPDATE Table1
SET Value = Value + 5
WHERE Id = 1;
SELECT Value
FROM Table1
WHERE Id = 1;
UPDATE Table1
SET Value = Value + 7
WHERE Id = 1;
SELECT Value
FROM Table1
WHERE Id = 1;
Natija:
Value = 6
Value = 8
Farza qilamiz, “Tranzaksiya 1” birinchi o’qib oldi, “Tranzaksiya 2” esa birinchi update-ni bajarib, o’zgarishni saqladi(ya’ni 1+7=8), keyin “Tranzaksiya 1” o’zgarishni saqladi(1+5=6 bo’ladi, 1+7+5=13 bo’lmaydi, chunki “Tranzaksiya 1” Value-ning “1” qiymatini oldin o’qib bo’lgandi). Bu hodisa o’zgarishlarning yoqolib qolishi deyiladi.
Yuqoridagi holatga o’xshash, Value-ning qiymati oldin o’zgaruvchiga o’qib olinadi.