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:
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.