Mauvzu: Mijoz ulanishini kutishni blokirovka qilish Reja:
Bloklash
Ilovalar va blokirovka
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: |