8. So'rov darajasida qulflarni bekor qilish. Qulflash turlari Agar gapdagi jadval nomidan keyin bo'lsa FROM quyidagi kalit so'zlardan biri so'rov blokirovka boshqaruvchisiga xalaqit beradi va belgilangan qulf turi qo'llaniladi:
· NOLOCK - iflos o'qish imkonini beradi;
· PAGLOCK - sahifa darajasini blokirovka qilish;
· ROWLOCK - yozuvlar darajasida blokirovka qilish;
· TABLOCK - umumiy stol blokirovkasi;
· TABLOCKX - eksklyuziv stol qulfi
Hozirgi vaqtda blokirovka qilish muammosi ko'plab tadqiqotlar mavzusidir.
Qulflarning ikkita asosiy turi mavjud (sinxronizatsiya tutqichlari):
Birgalikda (qattiq bo'lmagan) qulflar - Bu rejim ob'ektni birgalikda qo'lga olishni anglatadi va ob'ektda o'qish operatsiyasini bajarish uchun ishlatiladi. Shu tarzda qulflangan ob'ektlar tranzaksiyani bajarish jarayonida o'zgartirilmaydi va boshqa tranzaktsiyalar uchun mavjud, faqat o'qish rejimida;
Eksklyuziv (qattiq) qulflar - bu qulf egasidan boshqa hech kimga ma'lumotlarga kirishga umuman ruxsat bermang. Ushbu qulflar jadvalning mazmuni yoki tuzilishini o'zgartiruvchi buyruqlar uchun ishlatiladi va tranzaksiya oxirigacha amal qiladi.
Bir nechta o'qish tranzaksiyalari bo'yicha ob'ektlarni suratga olish mos keladi, ya'ni bir nechta tranzaktsiyalarga bir xil ob'ektni o'qishga ruxsat beriladi. Ob'ektni bitta o'qish tranzaktsiyasi bilan yozib olish, xuddi shu ob'ektni yozish orqali boshqa tranzaksiya bilan boshqa olish bilan mos kelmaydi. Turli xil yozish operatsiyalari bilan bir xil ob'ektni suratga olish mos kelmaydi.
Biroq, har xil turdagi qulflardan foydalanish o'lik muammosiga olib keladi. Tugallanish muammosi operatsion muhitda parallel jarayonlarni bajarishni ko'rib chiqishda paydo bo'ldi va umumiy (umumiy) ob'ektlarni boshqarish bilan ham bog'liq edi. Tugallanish misoli: Faraz qilaylik, A tranzaksiyasi 1-jadvalni qattiq bloklaydi, keyin esa 2-jadvalni qattiq bloklaydi. Boshqa tomondan, B tranzaksiyasi 2-jadvalni qattiq blokirovka qiladi, keyin esa 1-jadvalni qattiq bloklaydi.
Agar ushbu tranzaksiyalarning ikkalasi bir vaqtning o'zida ishlay boshlagan bo'lsa, u holda birinchi jadvalda o'zgartirish amallarini bajargandan so'ng, ularning ikkalasi ham cheksiz kutish bilan tugaydi: A tranzaktsiyasi B tranzaksiyasi tugashini va 2-jadval blokini ochishini kutadi va tranzaksiya. B behuda A tranzaksiyaning tugashini va 1-jadval qulfini ochishni kutadi.
Vaziyatlar ancha murakkab bo'lishi mumkin. O'zaro blokirovka qilingan operatsiyalar soni ancha ko'p bo'lishi mumkin. Har bir tranzaksiya bu vaziyatni mustaqil ravishda aniqlay olmaydi. Bu DBMS tomonidan hal qilinishi kerak. Ko'pgina tijorat ma'lumotlar bazasida bunday blokirovkalarni aniqlash mexanizmi mavjud.
Tugallanishni aniqlash tranzaksiyani kutish grafigini yaratishga (yoki saqlashga) asoslangan. Kutish grafigi yo'naltirilgan grafik bo'lishi mumkin, uning cho'qqilarida bitimlar nomlari joylashgan. Agar T1 tranzaktsiyasi T2 tranzaksiyasining tugashini kutayotgan bo'lsa, u holda strelka T1 ning tepasidan T2 ning tepasiga o'tadi. Bundan tashqari, o'qlar bloklangan ob'ektlarning nomlari va blokirovka turi bilan belgilanishi mumkin.
Qulflash mexanizmi qancha stol qulflanishini aniqlash uchun qulfni izolyatsiyalash darajasi tushunchasidan foydalanadi. An'anaviy ravishda uchta izolyatsiya darajasi qo'llaniladi:
· Qayta o'qish deb ataladigan izolyatsiya darajasi ma'lum bir tranzaksiya doirasida so'rovlar orqali olingan barcha yozuvlarni o'zgartirib bo'lmaydigan strategiyani amalga oshiradi. Ushbu yozuvlarni tranzaktsiya tugamaguncha o'zgartirib bo'lmaydi.
· Barqarorlik ko'rsatkichi deb ataladigan izolyatsiya darajasi har bir yozuvni o'qilgan vaqt davomida o'zgartirish yoki o'zgartirilayotganda o'qishni oldini oladi.
· Barqarorlikning uchinchi darajasi faqat o'qish uchun deyiladi. Faqat o'qish uchun butun jadvalni qulflaydi va shuning uchun yangilash buyruqlari bilan ishlatib bo'lmaydi. Shunday qilib, faqat o'qish uchun so'rov natijalari jadval ma'lumotlariga ichki mos kelishini ta'minlaydi.
Shunday qilib, ma'lumotlar bazasida parallellikni boshqarish vositasi bir vaqtning o'zida berilgan buyruqlar bir-biriga qanchalik xalaqit berishini aniqlaydi. Zamonaviy ma'lumotlar bazasida bu ma'lumotlar bazasining maksimal ishlashi va operatsion guruhlar uchun ma'lumotlar mavjudligini ta'minlashni hisobga olgan holda optimal echimni avtomatik ravishda topadigan moslanadigan vositadir.