§ Mos kelmaydigan ma'lumotlar muammolari. Ma'lumotlarni o'zgartirish imkoniyati bilan bog'liq x, allaqachon x o'qilgan boshqa dastur orqali. Ikkala operator ham deyarli bir vaqtning o'zida ishlay boshlaydi, 40 ta monitorning dastlabki ombor holatini oladi, keyin birinchi operator o'z mijoziga 30 ta monitor sotadi. U o'z ilovasidan chiqadi va u COMMIT tranzaksiyani bajarish buyrug'ini bajaradi. Ma'lumotlar bazasining holati izchil. Ayni paytda ikkinchi operatorning mijozi buyurtma berishga qaror qiladi va ikkinchi operator ma'lumotlarga qayta kirib, monitorlar soni o'zgarganligini ko'radi. Ikkinchi operator bitimning yaxlitligi buzilgan deb hisoblaydi, chunki bir ish davomida u 2 xil ombor holatini oldi. Bu holat 1-operator ilovasi 2-operator ilovasi tomonidan allaqachon o'qilgan ma'lumotlar to'plamini o'zgartirishga qodir bo'lganligi sababli yuzaga keldi.
Sanab o'tilgan muammolarni umumlashtirib, ikkita parallel bitimlar o'rtasidagi qarama-qarshiliklarning quyidagi turlarini ajratib ko'rsatish mumkin:
· W-W - tranzaksiya 2 tugamagan 1-tranzaksiya bilan o'zgartirilgan ob'ektni o'zgartirishga harakat qiladi;
· R-W - tranzaksiya 2 tugamagan 1-operatsiya tomonidan o'qilgan ob'ektni o'zgartirishga harakat qiladi;
· W-R tranzaksiya 2 tugatilmagan tranzaksiya 1 tomonidan o'zgartirilgan ob'ektni o'qishga harakat qiladi;
7. Tranzaktsiyalarni ketma-ketlashtirish Bunday qarama-qarshiliklarning oldini olish uchun bir vaqtning o'zida operatsiyalarni izchil amalga oshirish uchun ba'zi tartiblarni ishlab chiqish talab etiladi. Ushbu protsedura quyidagi qoidalarga muvofiq bo'lishi kerak:
1. Tranzaktsiyani amalga oshirish jarayonida foydalanuvchi faqat izchil ma'lumotlarni ko'radi. Foydalanuvchi nomuvofiq oraliq ma'lumotlarni ko'rmasligi kerak.
2. DB 2da tranzaktsiyalar parallel ravishda bajarilganda, tranzaktsiyalarni bajarish natijalari xuddi 1 tranzaksiya va keyin 2 tranzaksiya bajarilgandek yoki aksincha bo'lishi kerak.
Ushbu tamoyillarni amalga oshirish tartibi tranzaksiyalarni ketma-ketlashtirish deb ataladi. Bu ma'lumotlar bazasiga kirayotgan har bir foydalanuvchi u bilan xuddi shu ma'lumotlarga bir vaqtning o'zida boshqa foydalanuvchilar kirmagandek ishlashini kafolatlaydi. Bitimning birgalikda bajarilishi natijasi xuddi shu bitimlarning qandaydir ketma-ket bajarilishi natijasiga tengdir.
Eng oddiy chiqish yo'li tranzaktsiyalarni ketma-ket bajarish bo'ladi, ammo bunday chiqish vaqt nuqtai nazaridan optimal emas, ma'lumotlar bazasiga parallel kirishni boshqarishning yanada moslashuvchan usullari mavjud. Ushbu muammolarni hal qilishning eng keng tarqalgan mexanizmi ob'ektni (masalan, jadvalni) tranzaktsiyaning butun muddati uchun blokirovka qilishdir. Agar tranzaktsiya qulflangan ob'ektga kirsa, u ob'ekt qulfdan chiqarilgunga qadar kutishda qoladi, shundan so'ng u uni qayta ishlashni boshlashi mumkin. Biroq, blokirovka qilish yangi muammolarni keltirib chiqaradi - blokirovka tufayli tranzaktsiyalarning kechikishi.
Shunday qilib, sinxronlashtirilgan ob'ektni suratga olish deb ham ataladigan qulflar har xil turdagi ob'ektlarga qo'llanilishi mumkin. Eng katta blokirovkalash ob'ekti butun ma'lumotlar bazasi bo'lishi mumkin, ammo bu turdagi blokirovka ma'lumotlar bazasini ushbu ma'lumotlar bazasi bilan ishlaydigan barcha boshqa ilovalar uchun mavjud bo'lmaydi. Qulflash ob'ektining keyingi turi - jadvallar. Stolda ishlaydigan tranzaksiya uni tranzaksiyaning butun muddati davomida bloklaydi. Ushbu turdagi qulflash avvalgisidan afzalroqdir, chunki u boshqa jadvallarda ishlaydigan bir vaqtning o'zida operatsiyalarni amalga oshirishga imkon beradi.
Bir qator DBMSlar sahifa darajasida blokirovka qilishni amalga oshiradi. Bunday holda, DBMS diskdagi alohida sahifalarni faqat tranzaksiya ularga kirishda bloklaydi. Ushbu turdagi qulflash yanada yumshoqroq bo'lib, agar ular turli ma'lumotlar sahifalariga kirsa, turli tranzaktsiyalar bir jadvalda ishlashiga imkon beradi.
Ba'zi DBMSlarda qator darajasida blokirovka qilish mumkin, ammo bunday qulflash mexanizmi uni qo'llab-quvvatlash uchun qo'shimcha xarajatlarni talab qiladi. SQL Server parallellikni maksimal darajada oshirish uchun rekord darajadagi qulflarni o'rnatishga intiladi. Satr blokirovkalari soni ortishi bilan, agar yozuvlar soni chegaradan oshib ketgan bo'lsa, server sahifani blokirovka qilishga o'tishi mumkin.