20-Mauvzu: Mijoz ulanishini kutishni blokirovka qilish
Reja:
1. Bloklash
2. Ilovalar va blokirovka
3. Bloklangan ma'lumotlarni yig'ish
Har bir ulanish ko'plab DMVlarda sessiya identifikatori (SPID) yoki session_id sifatida
ko'rinadi. Ushbu OITSning har biri odatda jarayon deb ataladi, garchi bu odatiy ma'noda alohida
jarayon konteksti bo'lmasa ham. Aksincha, har bir SPID ma'lum bir mijozdan bitta ulanish
so'roviga xizmat ko'rsatish uchun zarur bo'lgan server resurslari va ma'lumotlar
tuzilmalaridan
iborat. Bitta mijoz ilovasi bir yoki bir nechta ulanishga ega bo'lishi mumkin. SQL Server nuqtai
nazaridan, bitta mijozli kompyuterda bir xil mijoz dasturining bir nechta ulanishlari va bir nechta
mijozli ilovalar yoki bir nechta mijozli kompyuterlarning bir nechta ulanishlari o'rtasida farq
yo'q. ular atomik. Bitta ulanish mijozning manbasidan qat'i nazar, boshqa ulanishni bloklashi
mumkin.
Bloklash
Qulflash-bu muqarrar va konstruktiv xarakterga ega bo'lgan har qanday o'zaro bog'liq
ma'lumotlar bazasini boshqarish tizimining (RDBMS) qulfga asoslangan parallelligi. Yuqorida
aytib o'tilganidek, SQL Serverni blokirovka qilish, bitta seans ma'lum bir resursda qulfni ushlab
turganda va ikkinchi spid bir xil manbada ziddiyatli qulf turini olishga harakat qilganda sodir
bo'ladi. Odatda, birinchi SPID resursni qulflash muddati qisqa. Boshqaruv sessiyasi qulfni
bo'shatganda, ikkinchi ulanish resursda o'z qulfini oladi va qayta ishlashni davom ettiradi. Bu erda
tasvirlanganidek, blokirovka qilish odatiy xatti -harakatlardir va kun davomida ko'p marta sodir
bo'lishi mumkin, bu tizim ishiga sezilarli ta'sir ko'rsatmaydi.
So'rovning davomiyligi va tranzaktsiyasi uning qulflari qancha
vaqt ushlab turilishini va
shuning uchun ularning boshqa so'rovlarga ta'sirini aniqlaydi. Agar so'rov tranzaktsiyada
bajarilmasa (va hech qanday qulflash ko'rsatmalari ishlatilmasa), SELECT iboralari uchun qulflar
so'rov vaqtida emas, faqat o'qilgan holatda saqlanadi. INSERT, UPDATE va DELETE iboralari
uchun so'rov paytida ma'lumotlarning izchilligini saqlash uchun ham, kerak bo'lganda so'rovni
qaytarilishini ta'minlash uchun ham qulflar ushlab turiladi.
Tranzaktsiyada bajarilgan so'rovlar uchun qulflarni ushlab turish muddati so'rov turiga,
tranzaktsiyaning izolyatsiya darajasiga va so'rovda qulflash ko'rsatmalari ishlatilganligiga qarab
belgilanadi. Qulflar, qulflash ko'rsatmalari va tranzaktsiyalarni izolyatsiya qilish darajalari tavsifi
uchun quyidagi maqolalarga qarang:
•
Ma'lumotlar bazasi mexanizmini qulflash
•
Qulf versiyasi
va qatorni sozlash
•
Bloklash rejimlari
•
Qulf mosligi
•
Ma'lumotlar bazasi mexanizmidagi satr versiyasiga asoslangan izolyatsiya
darajalari
•
Tranzaksiyalar
Agar qulflash va qulflash tizim ishiga salbiy ta'sir ko'rsatadigan darajada davom etsa, bu
quyidagi sabablardan biri bilan bog'liq:
•
SPID bir qancha resurslar qulfini ular chiqarilishidan
oldin uzoq vaqt ushlab
turadi. Bu turdagi blokirovka vaqt o'tishi bilan hal qilinadi, lekin ishlashning
yomonlashishiga olib kelishi mumkin.
•
SPID resurslar to'plamida qulflarni ushlab turadi va ularni hech qachon qo'yib
yubormaydi. Bu turdagi blokirovka o'zini yo'q qilmaydi va ta'sirlangan manbalarga kirishni
abadiy to'sadi.
Birinchi stsenariyda, vaziyat juda beqaror bo'lishi mumkin,
chunki har xil SPIDlar vaqt
o'tishi bilan turli manbalarni blokirovka qilib, harakatlanuvchi maqsadlarni yaratadi. Muammoni
individual so'rovlarga qadar qisqartirish uchun bu vaziyatlarni SQL Server Management
Studio yordamida hal qilish qiyin . Aksincha, ikkinchi holat tashxis qo'yish osonroq bo'lgan izchil
holatga olib keladi.
Ilovalar va blokirovka
Bloklash muammosi bilan, server tomonini sozlash va platforma muammolariga e'tibor
qaratish tendentsiyasi bo'lishi mumkin. Biroq, faqat ma'lumotlar bazasiga e'tibor qaratish qarorga
olib kelmaydi va mijozning ilovasi va uning so'rovlarini o'rganishga sarflangan vaqt va energiyani
yaxshiroq o'zlashtirishi mumkin. Ma'lumotlar bazasi chaqiruvlari qanday ko'rinishda bo'lishidan
qat'i nazar, blokirovka qilish muammosi ko'pincha dastur
tomonidan berilgan aniq SQL
hisobotlarini va so'rovlarni bekor qilish, ulanishni boshqarish, barcha qatorlarni olish bo'yicha aniq
xatti -harakatlarini tekshirishni talab qiladi. natijalar va boshqalar. Agar ishlab chiqish vositasi
ulanishni boshqarish, so'rovlarni bekor qilish, so'rovlar muddati, natijalarni olish va boshqalarni
aniq nazorat qilishga ruxsat bermasa, blokirovka qilish muammolari mavjud bo'lmasligi
mumkin. SQL Server uchun, ayniqsa, ishlashga sezgir OLTP muhitlari uchun dastur ishlab chiqish
vositasini tanlashdan oldin, bu potentsialni sinchkovlik bilan o'rganish kerak.
Ma'lumotlar bazasi va ilovasini loyihalash va ishlab chiqish bosqichida ma'lumotlar
bazasining ishlashiga e'tibor bering. Xususan, har bir so'rov uchun siz resurs sarfini, izolyatsiya
darajasini va tranzaktsiya yo'lining uzunligini hisoblashingiz kerak. Har bir so'rov va bitim iloji
boricha engil bo'lishi kerak. Ulanishni boshqarishning yaxshi
intizomidan foydalanish kerak; u
holda, dastur kam foydalanuvchilar bilan maqbul ishlashga ega bo'lishi mumkin, lekin
foydalanuvchilar soni ortishi bilan ishlash sezilarli darajada yomonlashishi mumkin.
To'g'ri dastur va so'rovlar dizayni bilan SQL Server bir vaqtning o'zida minglab
foydalanuvchilarni blokirovka qilmasdan qo'llab -quvvatlaydi.
Do'stlaringiz bilan baham: