Microsoft Access (hujjatlar) yordamida SQL-server xavfsizligini boshqarish. Ruxsat etilgan server roli nomi

Mayk Vayner tomonidan
Muallif: Burzin Patel
Tahrirlovchilar: Lyubor Kollar, Kevin Koks, Bill Emmert, Greg Xuseymer, Pol Burpo, Jozef Sak, Denni Li , Sanjay Mishra, Lindsi Allen, Mark Souza

Microsoft SQL Server 2008 oldingi versiyalarning funksiyasini kengaytiradigan bir qator yaxshilanishlarni va yangi funksiyalarni o'z ichiga oladi. Ma'lumotlar bazalarini boshqarish va saqlash, boshqarish, mavjudlik, xavfsizlik va ishlashni saqlash ma'lumotlar bazasi ma'murining zimmasida. Ushbu maqolada DBA ishini osonlashtiradigan SQL Server 2008 (alifbo tartibida) eng foydali o'nta yangi xususiyatlari tasvirlangan. Qisqacha tavsifdan tashqari, funktsiyalarning har biri uni ishlatishda yuzaga kelishi mumkin bo'lgan vaziyatlarni va foydalanish uchun muhim tavsiyalarni o'z ichiga oladi.

Faoliyat monitoringi

Ishlash vaqtidagi muammolarni bartaraf etishda yoki real vaqt rejimida server faoliyatini kuzatishda administrator bir qator skriptlarni ishga tushiradi yoki ishlaydigan jarayonlar to'g'risida umumiy ma'lumot to'plash va muammo sabablarini aniqlash uchun tegishli ma'lumot manbalarini tekshiradi. SQL Server 2008 Faoliyat Monitori ushbu ma'lumotlarni yig'ilib, ishlaydigan va yaqinda olib borilayotgan jarayonlar to'g'risida ingl. DBA ham yuqori darajadagi ma'lumotlarni ko'rishi, ham har qanday jarayonlarni batafsil tahlil qilishi va kutish statistikasi bilan tanishishi mumkin, bu esa muammolarni aniqlash va hal qilishni osonlashtiradi.

Activity Monitor-ni ochish uchun Object Explorer-da ro'yxatdan o'tgan server nomini o'ng tugmasini bosing va ni tanlang Faoliyat monitoringi Shu bilan bir qatorda, SQL Server Management Studio-dagi standart asboblar paneli belgisidan foydalaning. Activity Monitor administratorga tashqi ko'rinishiga ko'ra dispetcherga o'xshash umumiy bo'limni taklif qiladi windows vazifalari, shuningdek, shakllarda ko'rsatilgandek, shaxsiy jarayonlarni batafsil ko'rish, resurslarni kutish, ma'lumotlar fayllariga kirish / chiqish va so'nggi manbalarni talab qiladigan so'rovlar uchun komponentlar. bitta.

Shakl: bittasi:Faoliyat monitorining ko'rinishiSQL Server 2008 yil chorshanba kuniMenejment Studiya

Eslatma. Faoliyat monitorida sichqonchaning o'ng tugmachasini bosish orqali o'zgartirish mumkin bo'lgan ma'lumotlarni yangilash tezligi sozlamalari qo'llaniladi. Agar siz ma'lumotlarni tez-tez yangilashni tanlasangiz (har 10 soniyadan kam), yuqori yuklaydigan ishlab chiqarish tizimining ishlashi pasayishi mumkin.

Faoliyat monitor yordamida administrator quyidagi vazifalarni ham bajarishi mumkin:

· Bir marta bosish bilan Faoliyat monitorini pauza qiling va davom ettiring. Bu ma'murga ma'lum bir vaqt ichida shtat ma'lumotlarini "saqlash" imkoniyatini beradi, u yangilanmaydi yoki ustiga yozilmaydi. Shuni yodda tutingki, agar siz ma'lumotlarni qo'lda yangilasangiz, bo'limni kengaytirsangiz yoki qisqartirsangiz, eski ma'lumotlar yangilanadi va yo'qoladi.

· So'nggi yuqori quvvatli so'rovlar menyusi yordamida to'liq so'rov matni yoki grafik bajarilish rejasini ko'rsatish uchun satr elementini o'ng tugmasini bosing.

· Profiler tomonidan kuzatib boring yoki Jarayonlar ko'rinishidagi jarayonlarni tugating. Profiler dasturlari tadbirlari tadbirlarni o'z ichiga oladi RPC: Bajarildi, SQL: BatchStarting va SQL: BatchCompleted, va yana Audit Kirish va AuditChiqish.

Activity Monitor shuningdek, SQL Server Management Studio-da ro'yxatdan o'tgan SQL Server 2005-ning har qanday mahalliy yoki uzoqdagi nusxalari faoliyatini kuzatishga imkon beradi.

Audit

Hodisalarni, shu jumladan foydalanuvchilarning ob'ektlarga kirishi va o'zgarishlarning vaqti va mazmuni haqidagi ma'lumotlarni kuzatib borish va qayd etish qobiliyati ma'murga normativ yoki tashkiliy xavfsizlik standartlariga muvofiqligini ta'minlashga yordam beradi. Bundan tashqari, atrofdagi voqealarni tushunish, shuningdek, xatarlarni kamaytirish va atrof-muhit xavfsizligini saqlash rejasini ishlab chiqishda yordam berishi mumkin.

SQL Server 2008-da (faqat Enterprise va Developer nashrlarida) SQL Server Audit administrator va boshqa foydalanuvchilarga turli xil serverlar va ma'lumotlar bazalari tarkibiy qismlarining auditorlik tekshiruvlarini tayyorlash, saqlash va ko'rishga imkon beradigan avtomatlashtirishni amalga oshiradi. Xususiyat audit qobiliyatlarini serverda yoki ma'lumotlar bazasi darajasida donadorlik bilan ta'minlaydi.

Quyidagi kabi server darajasidagi auditorlik faoliyati guruhlari mavjud:

· FAILED_LOGIN_GROUP treklari tizimga kirishda urinishlar muvaffaqiyatsiz tugadi.

· BACKUP_RESTORE_GROUP ma'lumotlar bazasi zaxiralangan yoki tiklanganligi to'g'risida xabar beradi.

· DATABASE_CHANGE_GROUP ma'lumotlar bazasi yaratilganda, o'zgartirilganda yoki tashlab qo'yilganda tekshiradi.

Ma'lumotlar bazasi auditi bo'yicha guruhlar quyidagilarni o'z ichiga oladi:

· DATABASE_OBJECT_ACCESS_GROUP har safar ma'lumotlar bazasi ob'ektida CREATE, ALTER yoki DROP operatorlari bajarilganda chaqiriladi.

DATABASE_OBJECT_PERMISSION_CHANGE_GROUP ma'lumotlar bazasi ob'ektlarida GRANT, REVOKE yoki DENY so'zlarini ishlatganda chaqiriladi.

SELECT, DELETE va EXECUTE kabi boshqa auditorlik harakatlari mavjud. Qo'shimcha ma'lumotshu jumladan, barcha auditorlik guruhlari va faoliyatining to'liq ro'yxati, SQL Server auditorlik guruhlari va faoliyati bo'limiga qarang.

Audit natijalari keyinchalik fayl yoki voqealar jurnaliga ko'rish uchun yuborilishi mumkin ( tizim jurnali yoki Windows xavfsizlik hodisalari jurnali). Audit ma'lumotlari yordamida tuziladi Kengaytirilgan tadbirlar SQL Server 2008-dagi yana bir yangi xususiyatdir.

SQL Server 2008 auditi ma'murga haqiqatdan keyin javob berish juda qiyin bo'lgan savollarga javob berishga imkon beradi, masalan: "Ushbu indeksni kim o'chirib tashlagan?", "Saqlangan protsedura qachon o'zgartirilgan?", "Qaysi o'zgarish foydalanuvchiga ushbu jadvalga kirishiga to'sqinlik qilishi mumkin ? " va hatto "SELECT yoki UPDATE jadvalini kim bajargan [ dbo.Payroll] ?».

SQL Server auditidan foydalanish va uni amalga oshirish misollari haqida ko'proq ma'lumot olish uchun SQL Server 2008 muvofiqligi bo'yicha qo'llanmani ko'ring.

Zaxira nusxalarini siqish

DBA-lar ushbu xususiyatni SQL Server-da yoqishni uzoq vaqtdan beri taklif qilishgan. Endi tugadi va o'z vaqtida! So'nggi paytlarda, bir qator sabablarga ko'ra, masalan, ma'lumotlarni saqlash davomiyligi oshganligi va ko'proq jismoniy ma'lumotlarni saqlash zarurati bo'lganligi sababli ma'lumotlar bazalari hajmi keskin o'sib bora boshladi. Katta ma'lumotlar bazasining zaxira nusxasini yaratishda zaxira fayllari uchun disk hajmini ajratish kerak, shuningdek operatsiya uchun juda ko'p vaqt ajratish kerak.

SQL Server 2008 zaxira kompressiyasidan foydalanganda, zaxira fayli yozilgandek siqiladi, bu nafaqat diskda kam joyni talab qiladi, balki I / U-ni ham kamaytiradi va zaxira nusxasini yaratishda kam vaqt talab etadi. Haqiqiy foydalanuvchi ma'lumotlari bilan laboratoriya sinovlarida ko'p hollarda zaxira fayl hajmining 70-85% kamayishi kuzatildi. Bundan tashqari, sinovlar shuni ko'rsatdiki, nusxalash va tiklash vaqtlari taxminan 45% ga qisqartirilgan. Shuni ta'kidlash kerakki, siqishni paytida qo'shimcha ishlov berish protsessor yukini oshiradi. Resurslarni talab qiladigan nusxalash jarayonini boshqa jarayonlardan o'z vaqtida ajratish va ularning ishiga ta'sirini minimallashtirish uchun ushbu hujjatda tasvirlangan boshqa funktsiyadan foydalanishingiz mumkin - Manba Hokim.

Siqish BACKUP buyrug'iga WITH COMPRESSION bandini qo'shish orqali yoqiladi (qo'shimcha ma'lumot uchun SQL Server Books Online-ga qarang) yoki ushbu parametrni yoqish orqali Tanlovlar dialog oynasi Ma'lumotlar bazasini zaxiralash... Mavjud barcha zaxira skriptlariga o'zgartirishlar kiritish zaruratini bartaraf etish uchun sukut bo'yicha server nusxasida yaratilgan barcha zaxira nusxalarini siqish uchun global variant amalga oshirildi. (Ushbu parametr sahifada mavjud Ma'lumotlar bazasi sozlamalari dialog oynasi Server xususiyatlari; u shuningdek saqlangan protsedurani ishga tushirish orqali o'rnatilishi mumkin sp_ sozlash parametr qiymati bilan zaxira nusxasisiqilishsukut bo'yicha1 ga teng). Zaxira buyrug'i aniq siqishni parametrini talab qiladi va tiklash buyrug'i siqilgan zaxirani avtomatik ravishda taniydi va tiklashda uni dekompressiyadan chiqaradi.

Zaxira nusxalarini siqish disk maydoni va vaqtni tejaydigan juda foydali xususiyatdir. Zaxira kompressiyasini sozlash bo'yicha qo'shimcha ma'lumot uchun texnik eslatmani ko'ring Zaxira siqishni ishlashini sozlashSQL Server 2008 ... Eslatma. Siqilgan zaxira nusxalari faqat SQL Server 2008-ning Enterprise va Developer nashrlarida qo'llab-quvvatlanadi; ammo SQL Server 2008-ning barcha nashrlari siqilgan zaxiralarni tiklashga imkon beradi.

Markazlashtirilgan boshqaruv serverlari

Ko'pincha, DBA bir vaqtning o'zida ko'plab SQL Server nusxalarini boshqaradi. Bitta nuqtadan bir nechta SQL nusxalarini boshqarish va boshqarishni markazlashtirish qobiliyati katta kuch va vaqtni tejaydi. Ro'yxatdan o'tgan serverlar xususiyati orqali SQL Server Management Studio-da mavjud bo'lgan markazlashtirilgan boshqaruv serverini amalga oshirish ma'murga bitta boshqaruv konsolidan bir nechta SQL serverlarida turli ma'muriy operatsiyalarni bajarishga imkon beradi.

Markazlashgan boshqaruv serverlari ma'murga serverlar guruhini ro'yxatdan o'tkazishga va ularda quyidagi operatsiyalarni bitta guruhdagi kabi bajarishga imkon beradi:

· Ko'p serverli so'rovlarni bajarish: Endi siz ko'plab SQL serverlarida bitta manbadan skriptni ishga tushirishingiz mumkin, ma'lumotlar shu manbaga qaytariladi va har bir serverga alohida kirishingiz shart emas. Bu, ayniqsa, tarqatilgan so'rovni bajarmasdan bir nechta SQL-serverlardan ma'lumotlarni ko'rish yoki taqqoslash kerak bo'lganda foydali bo'lishi mumkin. Bundan tashqari, agar so'rov sintaksisini SQL Serverning oldingi versiyalari qo'llab-quvvatlasa, SQL Server 2008 Query Editor-dan so'rov SQL Server 2005 va SQL Server 2000 misollarida ishlashi mumkin. Qo'shimcha ma'lumot uchun blog postiga qarang ishchi guruh SQL Serverni boshqarish mumkinligi haqida ko'proq ma'lumot olish uchun SQL Server 2008 da bir nechta server so'rovlarini bajarish bo'limiga qarang.

Siyosatlarni bir nechta serverlarga import qilish va belgilash: funksionallik doirasida Siyosatga asoslangan boshqaruv (SQL Server 2008-dagi yana bir yangi xususiyat, shuningdek ushbu maqolada tasvirlangan), SQL Server 2008 markazlashtirilgan boshqaruv serverlarining alohida guruhlariga siyosat fayllarini import qilish imkoniyatini beradi va ma'lum bir guruhda ro'yxatdan o'tgan barcha serverlarda siyosatni aniqlashga imkon beradi.

· Xizmatlarni boshqarish va SQL-serverni konfiguratsiya menejeriga qo'ng'iroq qilish: Boshqaruvning markaziy serverlari vositasi DBA xizmatlar holatini ko'rish va hatto o'zgartirishi (tegishli ruxsatnomalar bilan) boshqarish markazini yaratishda yordam beradi.

· Ro'yxatdan o'tgan serverlarni import qilish va eksport qilish: Markaziy boshqaruv serverlarida ro'yxatdan o'tgan serverlar eksport qilinishi va import qilinishi mumkin, chunki ular administratorlar yoki SQL Server Management Studio-ning turli xil o'rnatilgan nusxalari o'rtasida o'tkaziladi. Ushbu imkoniyat ma'murga SQL Server Management Studio-da o'z mahalliy guruhlarini import qilish yoki eksport qilish uchun alternativa bo'lib xizmat qiladi.

Ruxsatlar Windows autentifikatsiyasi yordamida amalga oshirilishini yodda tuting, shuning uchun foydalanuvchi huquqlari va ruxsatnomalari Boshqaruv Markaziy Server guruhida ro'yxatdan o'tgan turli xil serverlarda farq qilishi mumkin. Qo'shimcha ma'lumot olish uchun bir nechta serverlarni markazlashtirilgan boshqaruv serverlari bilan boshqarish va Kimberly Trippning blogiga qarang: Markaziy SQL boshqaruv serverlari Server 2008 yil - ular bilan tanishmisiz?

Ma'lumot yig'uvchi va ma'lumotlar omborini boshqarish

Ishlashni sozlash va diagnostika qilish ko'p vaqtni talab qiladi va professional SQL Server ko'nikmalarini va ma'lumotlar bazalarining ichki tuzilishini tushunishni talab qilishi mumkin. Windows Performance Monitor (Perfmon), SQL Server Profiler va dinamik boshqaruv ko'rinishlari bularning ba'zilarini amalga oshirdi, lekin ular ko'pincha server ta'siriga ega edi, ulardan foydalanish noqulay edi yoki birlashtirilgan va talqin qilishni qiyinlashtirgan tarqoq ma'lumot to'plash usullaridan foydalangan.

Muayyan harakatlarni amalga oshirishingiz uchun tizimning ishlashi to'g'risida mazmunli tushunchalarni taqdim etish uchun SQL Server 2008 to'liq kengaytiriladigan ishlash ma'lumotlarini yig'ish va saqlash vositasi - Ma'lumotlarni yig'ish vositasini taqdim etadi. Unda bir nechta foydalanishga tayyor ma'lumotlar yig'ish agentlari, ishlash ma'lumotlarining markazlashtirilgan ombori, boshqaruv ma'lumotlari ombori deb nomlangan ma'lumotlar va to'plangan ma'lumotlarni taqdim etish uchun bir nechta oldindan tayyorlangan hisobotlar mavjud. Ma'lumot yig'uvchi - bu to'liq konfiguratsiya qilinadigan yig'ish tezligida Dinamik boshqaruv ko'rinishlari, Perfmon Performance Monitor va Transact-SQL so'rovlari kabi turli xil manbalardan ma'lumotlarni yig'adigan va to'playdigan o'lchovli vosita. Ma'lumot yig'uvchisi dasturning har qanday o'lchovli atributi bo'yicha ma'lumotlarni to'plash uchun kengaytirilishi mumkin.

Ma'lumotlarni boshqarish omborining yana bir foydali xususiyati - uni istalgan SQL Serverga o'rnatib, so'ngra bir yoki bir nechta SQL Server nusxalaridan ma'lumotlarni yig'ish qobiliyatidir. Bu ishlab chiqarish tizimlarining ishiga ta'sirini minimallashtiradi va bir nechta serverlardan ma'lumotlarni kuzatish va yig'ish sharoitida ko'lamini yaxshilaydi. Laboratoriya sinovlarida, band bo'lgan serverda (OLTP ish yukidan foydalangan holda) agentlarni ishga tushirish va boshqaruv ma'lumotlari omborini boshqarish paytida tarmoqli kengligining yo'qolishi taxminan 4% ni tashkil etdi. Ishlashning yo'qolishi ma'lumotlar yig'ish chastotasiga qarab farq qilishi mumkin (ko'rsatilgan test kengaytirilgan ish yuki ostida o'tkazildi, ma'lumotlar har 15 daqiqada saqlashga uzatilishi bilan), shuningdek, ma'lumotlar yig'ish davrida ham keskin o'sishi mumkin. Qanday bo'lmasin, siz mavjud resurslarning qisqarishini kutishingiz kerak, chunki DCExec.exe jarayonida ma'lum miqdorda xotira va protsessor resurslari ishlatiladi va boshqaruv ma'lumotlari do'koniga yozish kiritish-chiqarish quyi tizimidagi yukni ko'paytiradi va ma'lumotlar va jurnal fayllari uchun joy talab qiladi. (2-rasm) ma'lumotlar yig'ish bo'yicha odatiy hisobotni ko'rsatadi.

Shakl: 2:Ma'lumot yig'uvchilarning hisoboti ko'rinishiSQL Server 2008

Hisobotda SQL Serverning ma'lumotlar yig'ish davridagi faoliyati ko'rsatilgan. U kutish, protsessor, I / U va xotiradan foydalanish kabi hodisalarni va resurslarni talab qiladigan statistik ma'lumotlarni to'playdi va hisobot beradi. Ma'mur shuningdek, ishlash muammolarini tekshirish, aniqlash va tuzatish bo'yicha bitta so'rov yoki operatsiyaga e'tibor qaratib, hisobot moddalarini batafsil ko'rib chiqishi mumkin. Ushbu ma'lumotlarni yig'ish, saqlash va hisobot berish qobiliyatlari sizning atrofingizdagi SQLServerlarning sog'lig'ini proaktiv ravishda kuzatishga imkon beradi. Ular sizga kuzatilgan davr mobaynida ishlashga ta'sir ko'rsatgan o'zgarishlarni tushunish va baholash uchun kerak bo'lganda tarixiy ma'lumotlarga qaytishga imkon beradi. Ma'lumot yig'uvchi va boshqarish ma'lumotlari ombori SQLServerExpress-dan tashqari SQLServer 2008-ning barcha nashrlarida qo'llab-quvvatlanadi.

Ma'lumotlarni siqish

Ma'lumotlar bazasini boshqarish qulayligi odatdagi ma'muriy vazifalarni bajarilishini sezilarli darajada osonlashtiradi. Jadvallar, indekslar va fayllar hajmi kattalashib, juda katta ma'lumotlar bazalarining (VLDB) ko'payishi bilan ma'lumotlarni boshqarish va katta hajmdagi fayllar bilan ishlash yanada murakkablashadi. Bundan tashqari, talab qilinadigan ma'lumotlarning hajmi bilan xotira va jismoniy I / U o'tkazuvchanligi uchun tobora ortib borayotgan talablar ma'murlar faoliyatini qiyinlashtiradi va tashkilotlar uchun qimmatga tushadi. Natijada, ko'p hollarda ma'murlar va tashkilotlar xotirani yoki serverlarning I / U o'tkazuvchanligini kengaytirishi yoki ishlashning yomonlashishini qabul qilishi kerak.

SQL Server 2008 da kiritilgan ma'lumotlarni siqish ushbu muammolarni hal qilishga yordam beradi. Bu xususiyat ma'murga istalgan jadvallarni, jadval bo'limlarini yoki indekslarini tanlab ixchamlashtirishga imkon beradi, shu bilan disk va xotira hajmini va kiritish-chiqarish hajmini kamaytiradi. Ma'lumotlarni siqish va dekompressiya qilish protsessorni talab qiladi; ammo, ko'p hollarda qo'shimcha protsessor yuki I / U daromadini qoplashdan ko'proqdir. I / U to'siq bo'lgan konfiguratsiyalarda ma'lumotlarni siqish ham ishlash samaradorligini ta'minlashi mumkin.

Ba'zi laboratoriya sinovlarida ma'lumotlarni siqishni yoqish diskda 50-80% tejash imkonini berdi. Joyni tejash sezilarli darajada o'zgarib turdi: agar ma'lumotlarda bir nechta takrorlanadigan qiymatlar mavjud bo'lsa yoki qiymatlar belgilangan ma'lumotlar turi uchun ajratilgan barcha baytlardan foydalanilgan bo'lsa, tejash juda kam edi. Biroq, ko'plab ish yuklarining ko'rsatkichlari oshmadi. Shu bilan birga, ko'plab raqamli ma'lumotlar va ko'p nusxadagi qiymatlarni o'z ichiga olgan ma'lumotlar bilan ishlashda ba'zi bir namuna so'rovlarining ish yuklari uchun diskda sezilarli darajada tejash va ishlash ko'rsatkichlari bir necha foizdan 40-60% gacha bo'lgan.

SQLServer 2008 ikki xil siqishni qo'llab-quvvatlaydi: satrlarni siqish, bu jadvalning alohida ustunlarini siqadi va sahifalarni siqishni, satrlarni siqish, prefikslar va lug'at yordamida siqishni yordamida sahifalarni siqadi. Siqilish koeffitsienti ma'lumotlar turlariga va ma'lumotlar bazasi tarkibiga juda bog'liq. Umuman olganda, satrlarni siqishni yordamida dastur operatsiyalari bo'yicha xarajatlar kamayadi, shuningdek siqilish koeffitsienti kamayadi, ya'ni bo'sh joy kamroq bo'ladi. Shu bilan birga, sahifalarni siqish qo'shimcha qo'shimcha dasturlarning yuklanishiga va protsessorlarning yuklanishiga olib keladi, shuningdek bo'sh joyni sezilarli darajada tejaydi. Sahifani siqish qatorni siqishni yuqori to'plamidir, ya'ni agar ob'ekt yoki ob'ektning bir qismi sahifani siqish yordamida siqilgan bo'lsa, u chiziqli siqishni ham qo'llaydi. Bundan tashqari, SQLServer 2008 saqlash formatini qo'llab-quvvatlaydi vardecimal SQL Server 2005 Service Pack 2 (SP2) dan. Iltimos, ushbu format mag'lubiyatni siqishni pastki qismi bo'lgani uchun eskirganligini va mahsulotning keyingi versiyalaridan o'chirilishini unutmang.

Ikkala satrni va sahifani siqishni jadval yoki indeks uchun yoqilishi mumkin operatsion rejimilovalar uchun ma'lumotlarning mavjudligini buzmasdan. Shu bilan birga, ajratilgan jadvalning alohida qismini o'chirmasdan onlayn ravishda siqish yoki ochish mumkin emas. Sinovlar shuni ko'rsatdiki, eng katta jadvallarning bir nechtasini siqib chiqaradigan va disk maydonini tejashning (sezilarli darajada) ishlashning yo'qolishiga (minimal) nisbati mukammal bo'lgan birlashtirilgan yondashuv eng yaxshisidir. Shrink operatsiyasi, xuddi indeksni yaratish yoki qayta tiklash kabi, mavjud disk maydoni uchun talablarga ega bo'lganligi sababli, kichraytirish ushbu talablarni hisobga olgan holda amalga oshirilishi kerak. Siqishni eng kichik narsalar bilan boshlasangiz, siqish jarayonida minimal bo'sh joy talab qilinadi.

Ma'lumotlarni siqishni Transact-SQL bayonotlari yoki Ma'lumotlarni siqish ustasi yordamida amalga oshirish mumkin. Ob'ekt siqilgan paytda hajmini o'zgartirishi mumkinligini aniqlash uchun siz tizimda saqlanadigan protseduradan foydalanishingiz mumkin. sp_estimate_data_kompressiya_savodlar yoki ma'lumotlarni siqish ustasi. Ma'lumotlar bazasini ixchamlashtirish faqat SQLServer 2008 Enterprise va Developer nashrlarida qo'llab-quvvatlanadi. U faqat ma'lumotlar bazalarida amalga oshiriladi va dasturlarga o'zgartirish kiritishni talab qilmaydi.

Siqishni ishlatish haqida qo'shimcha ma'lumot olish uchun Siqilgan jadvallar va indekslarni yaratish bo'limiga qarang.

Siyosatga asoslangan boshqaruv

Ko'pgina ish stsenariylarida ma'lum bir SQLServer-da yoki bir necha marta SQLServer server guruhida muayyan konfiguratsiyalarni saqlash yoki qoidalarni bajarish zarur. Ma'mur yoki tashkilot yaratilgan barcha maxsus jadvallar yoki saqlangan protseduralar uchun ma'lum bir nomlash sxemasini talab qilishi yoki ko'plab serverlarda aniq konfiguratsiya o'zgarishlarini talab qilishi mumkin.

Siyosatga asoslangan boshqaruv (PBM) ma'murga atrof-muhitni boshqarish uchun keng imkoniyatlarni taqdim etadi. Siyosatlarni yaratish va ularga qarshi tekshirish mumkin. Agar skanerlash maqsadi (masalan, ma'lumotlar bazasi mexanizmi, ma'lumotlar bazasi, jadval yoki SQLServer indekslari) talablarga javob bermasa, administrator uni ushbu talablarga muvofiq avtomatik ravishda qayta tuzishi mumkin. Shuningdek, bir qator siyosat rejimlari mavjud (ularning aksariyati avtomatlashtirilgan), bu siyosatning muvofiqligini tekshirishni osonlashtiradi, siyosat buzilishini qayd qiladi va bildirishnoma yuboradi va hatto siyosatga muvofiqligini ta'minlash uchun o'zgarishlarni qaytaradi. Ta'rif rejimlari va ularning qanday jihatlarga mos kelishi haqida ko'proq ma'lumot olish uchun (ushbu blogda muhokama qilingan Siyosatga asoslangan boshqaruv tushunchasi (PBM)) SQL Server Policy based Management Blog-ga qarang.

Bir nechta server misollarini aniqlash va qo'llash uchun siyosatlar XML fayllari sifatida eksport qilinishi va import qilinishi mumkin. Bundan tashqari, SQLServerManagement Studio-da va Ro'yxatdan o'tgan Server ko'rinishida siz mahalliy server guruhida yoki Management Central Server guruhida ro'yxatdan o'tgan ko'plab serverlarda siyosatni belgilashingiz mumkin.

IN oldingi versiyalar SQL Serverda siyosatga asoslangan boshqaruv funktsiyalarining hammasi ham bajarilishi mumkin emas. Biroq, funktsiya hisobot tuzish siyosatlar SQL Server 2005 va SQL Server 2000 da ishlatilishi mumkin. Siyosatga asoslangan boshqaruvdan foydalanish haqida ko'proq ma'lumot olish uchun SQLServer Books Online-da siyosatga asoslangan boshqaruv yordamida serverlarni boshqarish bo'limiga qarang. Siyosat texnologiyasining o'zi haqida qo'shimcha ma'lumot olish uchun misollar bilan SQL Server 2008 muvofiqligi bo'yicha qo'llanmani ko'ring.

Bashoratli ishlash va o'xshashlik

Ko'pgina ma'murlar SQLServerlarni doimiy ravishda o'zgaruvchan ish yuklari bilan ta'minlashda va bashorat qilinadigan ishlash darajalarini etkazib berishda (yoki so'rovlar va ishlash rejalaridagi farqni minimallashtirishda) sezilarli darajada qiyinchiliklarga duch kelishmoqda. So'rovlarni bajarish paytida kutilmagan natijalar o'zgarishi, so'rovlar rejasining o'zgarishi va / yoki ishlashga oid umumiy muammolar bir qator sabablarga, shu jumladan SQLServerda ishlaydigan dasturlarning yukini ko'payishiga yoki ma'lumotlar bazasining o'zi yangilanishiga sabab bo'lishi mumkin. SQLServer-dagi so'rovlar va operatsiyalarning bashorat qilinishi sizning mavjudligingiz, ishlashingiz va / yoki biznesning uzluksiz maqsadlariga (SLA va operatsion yordam shartnomalari) erishish va ularni saqlashni ancha osonlashtiradi.

SQLServer 2008-da ishlashning taxmin qilinishini yaxshilash uchun bir nechta xususiyatlar o'zgartirildi. Shunday qilib, SQLServer 2005 reja tuzilmalariga ma'lum o'zgarishlar kiritildi ( rejalarni birlashtirish) va stol darajasida blokirovka eskalatsiyasini boshqarish qobiliyatini qo'shdi. Ikkala yaxshilanish ham dastur va ma'lumotlar bazasi o'rtasida oldindan taxmin qilinadigan va tartibli aloqaga yordam beradi.

Birinchidan, Reja bo'yicha qo'llanma:

SQL Server 2005 so'rovlarning barqarorligini va bashorat qilinishini yaxshilab, keyinchalik dasturda o'zgartirilishi mumkin bo'lmagan so'rovlarni bajarish bo'yicha ko'rsatmalarni o'z ichiga olgan "reja qo'llanmasi" deb nomlangan yangi xususiyatga ega bo'ldi. Qo'shimcha ma'lumot olish uchun oq qog'ozga murojaat qiling. USE PLAN so'rovlari juda kuchli bo'lsa-da, u faqat SELECT DML operatsiyalarini qo'llab-quvvatladi va reja qo'llanmalarining formatlash sezgirligi tufayli foydalanish ko'pincha noqulay edi.

SQL Server 2008-da reja bo'yicha qo'llanma mexanizmi ikki yo'l bilan kengaytirildi: birinchidan, USE PLAN so'rovida ko'rsatma ko'magi kengaytirildi, bu endi barcha DML bayonotlari bilan mos keladi (INSERT, UPDATE, DELETE, MERGE); ikkinchidan, joriy qilingan yangi funktsiya rejalarni birlashtirishto'g'ridan-to'g'ri SQL Server reja keshida mavjud bo'lgan har qanday so'rov rejasini to'g'ridan-to'g'ri reja tuzilishini (pinning) yaratishga imkon beradi, bu quyidagi misolda ko'rsatilgandek.

sp_create_plan_guide_from_handle
@name \u003d N'MyQueryPlan ',
@plan_handle \u003d @plan_handle,
@statement_start_offset \u003d @offset;

Har qanday tarzda tuzilgan reja qo'llanmasida ma'lumotlar bazasi maydoni mavjud; u jadvalda saqlanadi sys.plan_guides... Reja bo'yicha qo'llanmalar faqat optimallashtiruvchi tomonidan so'rovlar rejasini tanlash jarayoniga ta'sir qiladi, ammo so'rovni kompilyatsiya qilish zaruratini bekor qilmaydi. Shuningdek, funktsiya qo'shildi sys.fn_validate_plan_guidemavjud SQL Server 2005 reja qo'llanmalarini tasdiqlash va ularni SQL Server 2008 bilan moslashtirish uchun. Rejalashtirish SQL Server 2008 Standard, Enterprise va Developer nashrlarida mavjud.

Ikkinchidan, qulflarning eskalatsiyasi:

Qulfni eskalatsiyalash ko'pincha qulf bilan bog'liq muammolarni keltirib chiqardi va ba'zida hatto to'siqlarga olib keldi. Ma'mur ushbu muammolarni hal qilishi kerak edi. SQLServer-ning oldingi versiyalarida blokirovkaning eskalatsiyasini boshqarish mumkin edi (1211 va 1224-sonli bayroqlar), ammo bu faqat darajadagi donadorlik uchun mumkin edi. Ba'zi ilovalar uchun bu muammoni hal qildi, boshqalari uchun esa yanada katta muammolarni keltirib chiqardi. SQL Server 2005-dagi blokirovka eskalatsiyasi algoritmining yana bir kamchiligi shundaki, bo'lingan jadvallardagi qulflar bo'lim darajasiga emas, balki to'g'ridan-to'g'ri jadval darajasiga ko'tarilgan.

SQLServer 2008 ikkala muammoga echim taklif qiladi. Bu stol darajasida blokirovka eskalatsiyasini boshqarish uchun yangi variantni taqdim etadi. ALTERTABLE buyrug'i bilan siz eskalatsiyani o'chirishni yoki bo'lingan jadvallar uchun bo'lim darajasiga ko'tarilishni tanlashingiz mumkin. Ushbu xususiyatlarning ikkalasi ham boshqa ob'ektlarga ta'sir qiladigan kiruvchi nojo'ya ta'sirlarsiz miqyosi va ishlashni yaxshilaydi. Blokning eskalatsiyasi ma'lumotlar bazasi ob'ekti darajasida o'rnatiladi va dasturni o'zgartirishni talab qilmaydi. SQLServer 2008 ning barcha nashrlarida qo'llab-quvvatlanadi.

Resurs hokimi

Yalang'och so'rovlarning oldini olish va juda muhim ish yuklari bilan ta'minlashni ta'minlash orqali doimiy xizmat darajasini saqlab qolish o'tmishda qiyin bo'lgan. So'rovlar to'plamiga ma'lum miqdordagi resurslarni ajratilishini kafolatlashning imkoni yo'q edi, kirishning ustuvor yo'nalishlari ustidan nazorat yo'q edi. Barcha so'rovlar mavjud bo'lgan barcha manbalarga kirish huquqiga ega edi.

Yangi sQL funktsiyasi Server 2008 - Resurslar hokimi - bu sizga ish yuklarini farqlash va foydalanuvchi ehtiyojlarini qondirish uchun resurslarni ajratish imkonini berib, ushbu muammoni hal qilishga yordam beradi. Resurslar gubernatorining cheklovlari real vaqt rejimida osongina qayta sozlanishi mumkin, bu esa ish hajmiga minimal ta'sir qiladi. Resurs havzasi bo'ylab ish yuklarini taqsimlash ulanish darajasida sozlanishi va bu jarayon ilovalar uchun to'liq shaffofdir.

Quyidagi diagrammada resurslarni taqsimlash jarayoni ko'rsatilgan. Ushbu stsenariyda uchta ish yuki havolasi (Admin, OLTP va Report ish yuklari) tuzilgan va OLTP ish yuki havzasi eng yuqori ustuvorlikka ega. Shu bilan birga, ikkita resurs havzasi (Pool and Application pool) xotira va protsessor (CPU) vaqtining belgilangan chegaralari bilan tuzilgan. Oxirgi bosqichda Admin ish yuki Administrator havzasiga, OLTP va Report ish yuklari esa Ilova havzasiga beriladi.

Resurslar hokimidan foydalanishda e'tiborga olish kerak bo'lgan ba'zi narsalar.

- Resurslar boshqaruvchisi tizimga kirish ma'lumotlarini, xost nomini yoki dastur nomini "resurslar havzasining identifikatori" sifatida ishlatadi, shuning uchun har bir server uchun ma'lum miqdordagi mijozlari bo'lgan dastur uchun xuddi shu kirish tizimidan foydalanish birlashishni murakkablashtirishi mumkin.

- Ma'lumotlar bazasi darajasida ob'ektlarni guruhlash, bunda resurslarga kirish ma'lumotlar bazasi ob'ektlariga qarab tartibga solinadi, qo'llab-quvvatlanmaydi.

- Faqat protsessor va xotiradan foydalanishni sozlash mumkin. Kiritish-chiqarish resurslarini boshqarish amalga oshirilmagan.

- Bir marta ulangandan so'ng, resurslar havzalari o'rtasida ish yuklarini dinamik ravishda almashtirish mumkin emas.

- Resurslar boshqaruvchisi faqat SQL Server 2008 Enterprise va Developer nashrlarida qo'llab-quvvatlanadi va faqat SQL Server Database Engine uchun ishlatilishi mumkin; SQL Server Analysis Services (SSAS), SQL Server Integration Services (SSIS) va SQL Server Reporting Services (SSRS) xizmatlarini boshqarish qo'llab-quvvatlanmaydi.

Shaffof ma'lumotlarni shifrlash (TDE)

Ko'pgina tashkilotlar xavfsizlik masalalariga katta ahamiyat berishadi. Tashkilotning eng qimmatbaho boyliklaridan biri - uning ma'lumotlarini himoya qiladigan turli xil qatlamlar mavjud, aksariyat hollarda tashkilotlar foydalanadigan ma'lumotlarini jismoniy xavfsizlik choralari, xavfsizlik devorlari va kirishni qat'iy cheklash qoidalari bilan muvaffaqiyatli himoya qilishadi. Biroq, yo'qolgan taqdirda jismoniy vosita zaxira nusxasi bo'lgan disk yoki lenta kabi ma'lumotlar bilan yuqoridagi barcha xavfsizlik choralari foydasiz, chunki tajovuzkor ma'lumotlar bazasini qayta tiklashi va ma'lumotlarga to'liq kirish huquqini qo'lga kiritishi mumkin. SQL

Server 2008 shaffof ma'lumotlarni shifrlash (TDE) yordamida ushbu muammoni hal qilishni taklif qiladi. TDE shifrlash bilan I / U ma'lumotlari real vaqtda shifrlanadi va shifrdan chiqariladi; ma'lumotlar va jurnal fayllari ma'lumotlar bazasini shifrlash kaliti (DEK) yordamida shifrlanadi. DEK - bu server ma'lumotlar bazasi\u003e master-da saqlangan sertifikat bilan himoyalangan nosimmetrik kalit yoki Advanced Key Management Module (EKM) bilan himoyalangan assimetrik kalit.

TDE "faol bo'lmagan" ma'lumotlarni himoya qiladi, shuning uchun MDF, NDF va LDF fayllaridagi ma'lumotlarni Hexadecimal Data Editor yordamida ko'rish mumkin emas. Shu bilan birga, SQL Server Management Studio-dagi SELECT bayonotining natijalari kabi jonli ma'lumotlar jadvalni ko'rish huquqiga ega foydalanuvchilar uchun ko'rinadigan bo'lib qoladi. Bundan tashqari, TDE ma'lumotlar bazasi darajasida amalga oshirilganligi sababli ma'lumotlar bazasi so'rovlarni optimallashtirish uchun indeks va kalitlardan foydalanishi mumkin. TDE-ni ustun darajasidagi shifrlash bilan aralashtirmaslik kerak - bu hatto faol ma'lumotlarni ham shifrlashi mumkin bo'lgan mustaqil xususiyat.

Ma'lumotlar bazasini shifrlash - bu bir martalik jarayon bo'lib, uni Transact - SQL buyrug'i bilan yoki SQL Server Management Studio ichidan boshlash va so'ngra orqa fonda bajarish mumkin. Shifrlash yoki parol hal qilish holatini dinamik boshqaruv ko'rinishi yordamida nazorat qilish mumkin sys.dm_database_encryption_keys... Laboratoriya sinovlari paytida 100 Gb ma'lumotlar bazasi algoritm yordamida shifrlangan aES shifrlash _128 taxminan bir soat davom etdi. TDE qo'shimcha xarajatlari birinchi navbatda dasturning ish yuki bilan ta'minlangan bo'lsa-da, biz o'tkazgan ba'zi sinovlarda qo'shimcha xarajatlar 5% dan kam bo'lgan. Shuni yodda tutish kerakki, ishlashga ta'sir qilishi mumkin, agar TDE nusxadagi ma'lumotlar bazalarida ishlatilsa, u holda tizim ma'lumotlar bazasi ham shifrlangan bo'ladi. tempDB... Va nihoyat, bir vaqtning o'zida turli xil funktsiyalardan foydalanilganda quyidagilar e'tiborga olinishi kerak:

  • Shifrlangan ma'lumotlar bazasini siqish uchun zaxira siqishni ishlatganda, siqilgan zaxira hajmi shifrlashsiz kattaroq bo'ladi, chunki shifrlangan ma'lumotlar yaxshi siqilmaydi.
  • Ma'lumotlar bazasini shifrlash ma'lumotlarning siqilishiga ta'sir qilmaydi (satr yoki sahifa).

TDE tashkilotga me'yoriy standartlarga va ma'lumotlarni himoya qilishning umumiy darajasiga rioya qilish imkoniyatini beradi. TDE faqat SQL Server 2008 Enterprise va Developer nashrlarida qo'llab-quvvatlanadi; uni faollashtirish mavjud bo'lgan ilovalarni o'zgartirishni talab qilmaydi. Qo'shimcha ma'lumot olish uchun SQL Server 2008 Enterprise-dagi Ma'lumotlarni shifrlash yoki Shaffof ma'lumotlarni shifrlash.

Xulosa qilib aytganda, SQL Server 2008 ma'lumotlar bazasi ma'muri ishini engillashtirish uchun xususiyatlar, yaxshilanishlar va imkoniyatlarni taqdim etadi. Bu erda eng ommabop 10 talqin qilingan, ammo SQL Server 2008 ma'murlar va boshqa foydalanuvchilar uchun hayotni engillashtirish uchun juda ko'p xususiyatlarga ega. SQL Server bilan ishlashning boshqa sohalari uchun "Top 10 xususiyatlar" ro'yxati uchun ushbu saytdagi SQL Server 2008 maqolalaridagi boshqa Top 10 ... ga qarang. To'liq ro'yxat funktsiyalari va ularning batafsil tavsif SQL Server Books Online va SQL Server 2008 ga umumiy veb-saytga qarang.

SQL Server samarali algoritmlarni yozish uchun zarur bo'lgan bir qator turli xil boshqaruv tuzilmalarini taqdim etadi.

Ikki yoki undan ortiq jamoalarni guruhlarga birlashtirish bitta blok BEGIN va END kalit so'zlari yordamida amalga oshiriladi:

<блок_операторов>::=

Guruhlangan buyruqlar SQL tarjimoni tomonidan bitta buyruq sifatida ko'rib chiqiladi. Bunday guruhlash polivariant dallanma, shartli va tsiklik konstruksiyalar uchun talab qilinadi. BEGIN ... END bloklari joylashishi mumkin.

Ba'zi SQL buyruqlari boshqa buyruqlar bilan birgalikda bajarilmasligi kerak (masalan, zaxira buyruqlari, jadvallarning tuzilishini o'zgartirish, saqlanadigan protseduralar va shunga o'xshashlar), shuning uchun ularni BEGIN ... END bandiga birgalikda qo'shib bo'lmaydi.

Ko'pincha, dasturning ma'lum bir qismi faqat ba'zi mantiqiy shartlar amalga oshirilganda bajarilishi kerak. Shartli bayonot uchun sintaksis quyida keltirilgan:

<условный_оператор>::=

IF log_expression

(sql_operator | statement_block)

(sql_operator | statement_block)]

Ko'chadanlar quyidagi qurilish yordamida tashkil etiladi:

<оператор_цикла>::=

WHILE log_expression

(sql_operator | statement_block)

(sql_operator | statement_block)

O'zining tanasida BREAK buyrug'ini bajarib, tsiklni to'xtatishga majbur qilish mumkin. Agar tanadagi barcha buyruqlar bajarilishini kutmasdan tsiklni qayta boshlash kerak bo'lsa, siz CONTINUE buyrug'ini bajarishingiz kerak.

Bir nechta bitta yoki ichki joylashtirilgan shartlarni almashtirish uchun quyidagi konstruktsiyadan foydalaning:

<оператор_поливариантных_ветвлений>::=

CASE input_value

WHEN (value_for_compare |

log_expression) UNDAN

tashqi_fikr [, ... n]

[ELSE else_out_expression]

Agar kirish qiymati va taqqoslanadigan qiymat bir xil bo'lsa, unda qurilish chiqish qiymatini qaytaradi. Agar kirish parametrining qiymati WHEN ... THEN satrlarining biron birida topilmasa, ELSE kalit so'zidan keyin ko'rsatilgan qiymat qaytariladi.

SQL server ma'lumotlar bazasi tuzilishining asosiy ob'ektlari

Ma'lumotlar bazasining mantiqiy tuzilishini ko'rib chiqamiz.

Mantiqiy tuzilma jadvallarning tuzilishini, ular orasidagi aloqalarni, foydalanuvchilar ro'yxatini, saqlanadigan protseduralarni, qoidalarni, standartlarni va boshqa ma'lumotlar bazasini belgilaydi.

Ma'lumotlar SQL Serverda ob'ektlar sifatida mantiqiy tartiblangan. SQL Server ma'lumotlar bazasidagi asosiy ob'ektlarga quyidagi ob'ektlar kiradi.

Ma'lumotlar bazasining asosiy ob'ektlarini tezkor ko'rib chiqish.

Jadvallar

SQL-dagi barcha ma'lumotlar chaqirilgan ob'ektlarda joylashgan jadvallar... Jadvallar - bu real hayotdagi narsalar, hodisalar, jarayonlar haqidagi har qanday ma'lumotlarning to'plamidir. Boshqa biron bir ob'ekt ma'lumotlarni saqlamaydi, ammo ular jadvaldagi ma'lumotlarga kirishlari mumkin. SQL-dagi jadvallar barcha boshqa ma'lumotlar bazalari jadvallari bilan bir xil tuzilishga ega va quyidagilarni o'z ichiga oladi:

· Torlar; har bir satr (yoki yozuv) - bu muayyan ob'ekt nusxasining atributlari (xususiyatlari) to'plamidir;

· Ustunlar; har bir ustun (maydon) atribut yoki atributlar to'plamini anglatadi. Qator maydoni jadvalning minimal elementidir. Jadvaldagi har bir ustun ma'lum bir nom, ma'lumotlar turi va o'lchamiga ega.

Vakillik

Ko'rishlar (ko'rinishlar) - bu virtual jadvallar, ularning mazmuni so'rov bo'yicha aniqlanadi. Haqiqiy jadvallar singari ko'rinishlar ham nomlangan ustunlar va qatorlarni o'z ichiga oladi. Oxirgi foydalanuvchilar uchun ko'rinish jadvalga o'xshaydi, lekin u aslida ma'lumotlarni o'z ichiga olmaydi, faqat bitta yoki bir nechta jadvalda joylashgan ma'lumotlarni aks ettiradi. Foydalanuvchi ko'rinish orqali ko'rgan ma'lumotlar ma'lumotlar bazasida mustaqil ob'ekt sifatida saqlanmaydi.

Saqlangan protseduralar

Saqlangan protseduralar - bu bitta modulga birlashtirilgan SQL buyruqlar guruhi. Ushbu buyruqlar guruhi birlik sifatida tuziladi va bajariladi.

Triggerlar

Triggerlar - jadvalga ma'lumotlar qo'shilganda, o'zgartirganda yoki o'chirishda avtomatik ravishda ishga tushiriladigan saqlanadigan protseduralarning maxsus klassi.

Vazifalar

Dasturlash tillaridagi funktsiyalar tez-tez bajariladigan kodlarni o'z ichiga olgan tuzilmalardir. Funktsiya ma'lumotlar ustida ba'zi bir harakatlarni amalga oshiradi va ba'zi bir qiymatlarni qaytaradi.

Ko'rsatkichlar

Indeks - jadval yoki ko'rinish bilan bog'liq bo'lgan va ulardagi ma'lumotlarni qidirishni tezlashtirishga mo'ljallangan tuzilish. Indeks indekslangan ustunlar deb nomlangan bir yoki bir nechta ustunlarda aniqlanadi. Unda indekslangan ustun yoki manba jadvalidagi yoki ko'rinishdagi tegishli qatorga havolalar bilan ustunlarning tartiblangan qiymatlari mavjud. Ma'lumotlarni saralash orqali ishlash yaxshilanadi. Indekslardan foydalanish qidiruv ish faoliyatini sezilarli darajada yaxshilashi mumkin, ammo indekslarni saqlash uchun ma'lumotlar bazasida qo'shimcha joy kerak.


© 2015-2019 sayti
Barcha huquqlar ularning mualliflariga tegishli. Ushbu sayt mualliflik huquqini talab qilmaydi, lekin bepul foydalanishni ta'minlaydi.
Sahifa yaratilgan sana: 2016-08-08

Mening kompaniyam ularni yillik ko'rib chiqish jarayonidan o'tdi va men nihoyat ularni SQL sxemalarini / sahnalarini boshqarish uchun eng yaxshi echimni topish vaqti kelganiga amin bo'ldim. Hozirda bizda faqat bir nechta qo'lda yangilanish skriptlari mavjud.

Men VS2008 Database Edition bilan boshqa kompaniyada ishladim va bu ajoyib mahsulot. Mening xo'jayinim Redgate tomonidan SQL Compare-ni ko'rib chiqishni va undan yaxshi mahsulotlarni qidirishni so'radi. SQL taqqoslash ham ajoyib mahsulot. Biroq, ular Perforce-ni qo'llab-quvvatlamaganga o'xshaydi.

Buning uchun ko'plab mahsulotlardan foydalanganmisiz?

SQLni boshqarish uchun qanday vositalardan foydalanasiz?

Mening kompaniyam sotib olishdan oldin talablarga nimani kiritish kerak?

10 ta javob

Menimcha, barcha qismlarga ishlov beradigan vosita mavjud emas. VS Database Edition yaxshi chiqadigan dvigatelni ta'minlamaydi. Solution brauzeridan individual skriptlarni ishga tushirish katta loyihalarda unchalik katta emas.

Hech bo'lmaganda sizga kerak

  • IDE / muharriri
  • ombor manba kodibu sizning IDE-dan ishga tushirilishi mumkin
  • anjumanga nom berish va papkalarda turli xil skriptlarni tashkil qilish
  • o'zgarishlarni boshqarish, nashrlarni boshqarish va tarqatishni amalga oshirish jarayoni.

Oxirgi o'q - bu narsalar odatda buziladi. Mana nimaga. Yaxshi boshqarish va versiyalarni kuzatish uchun har bir JB ob'ektini o'zi saqlamoqchisiz o'z faylingiz skript. Ya'ni har bir jadval, saqlangan protsedura, ko'rish, indeks va hk. o'z fayliga ega.

Biror narsa o'zgarganda, siz faylni yangilaysiz va sizning omboringizda yangi versiyangiz mavjud zarur ma'lumotlar... Bir nechta o'zgarishlarni nashrga, ishlov berishga bog'lash haqida gap ketganda alohida fayllar noqulay bo'lishi mumkin.

Men foydalangan ikkita variant:

    Ma'lumotlar bazasining barcha ob'ektlarini o'z fayllarida saqlashdan tashqari, sizda alohida skriptlarning birikmasi bo'lgan skriptlar mavjud. Buning nochorligi: Sizda ikkita xavf-xatar va kamchiliklarga ega kod mavjud. Potentsial: Chiqarishni boshlash bitta skriptni bajarish kabi oson.

    skript meta-ma'lumotlarini chiqish manifestidan o'qiy oladigan va maqsadli serverda manifestda ko'rsatilgan eadch skriptini bajaradigan kichik vositani yozing. Buning hech qanday salbiy tomoni yo'q, faqat kod yozishingiz kerak. Ushbu yondashuv tashlab bo'lmaydigan va qaytadan yaratib bo'lmaydigan jadvallar uchun ishlamaydi (bir marta yashab, sizda ma'lumotlar mavjud bo'lsa), shuning uchun jadvallar uchun siz o'zgaruvchan skriptlarga ega bo'lasiz. Shunday qilib, bu aslida ikkala yondashuvning kombinatsiyasi bo'ladi.

Men "o'zingiz yozing" lagerida bo'laman, chunki uchinchi tomon mahsulotlari sizga ma'lumotlar bazasi kodini boshqarishda yordam beradi. Menda har bir ob'ekt uchun bitta skript yo'q, chunki ob'ektlar vaqt o'tishi bilan o'zgarib turadi va uchta jadvalga ega bo'lish uchun "jadval yaratish" skriptini o'ntadan to'qqiz marta etishtirish etarli bo'lmaydi.

Ma'lumotlar bazasini yaratish juda ahamiyatsiz. Bir nechta CREATE skriptlarini o'rnating, ularni to'g'ri joylashtiring (sxemalar oldida ma'lumotlar bazasini, jadvallar oldida sxemalarni, protseduralar oldida jadvallarni, qo'ng'iroqlar oldidan qo'ng'iroq qilish protseduralarini va boshqalarni yarating) va bajaring. Ma'lumotlar bazasini o'zgartirish oson emas:

  • Agar siz jadvalga ustun qo'shsangiz, shunchaki jadvalni tashlab, uni yangi ustun bilan yaratib bo'lmaydi, chunki bu sizning barcha qimmatli ishlab chiqarish ma'lumotlaringizni yo'q qiladi.
  • Agar Fred XYZ jadvaliga ustun qo'shsa va Meri XYZ jadvaliga yana bitta ustun qo'shsa, qaysi ustun avval qo'shiladi? Ha, jadvallardagi ustunlar tartibi muhim emas [chunki siz hech qachon SELECT * dan foydalanmayapsizmi, to'g'rimi?] Ma'lumotlar bazasini boshqarish va versiyani kuzatib borishga harakat qilmasangiz, u holda sizga o'xshamaydigan ikkita "yaroqli" ma'lumotlar bazasi mavjud bir-birlari haqiqiy bosh og'rig'iga aylanishadi. Biz SQL taqqoslashlarini boshqarish uchun emas, balki narsalarni ko'rib chiqish va kuzatib borish uchun foydalanamiz, ayniqsa rivojlanish jarayonida va biz bir-biridan kam bo'lgan "ular har xil (lekin magger emas)" holatlarni muhim farqlarni sezmasligimizga to'sqinlik qilamiz.
  • Xuddi shunday, bir nechta loyihalar (ishlab chiquvchilar) bir vaqtning o'zida va alohida ishlashganda umumiy asos ma'lumotlar juda qiyin bo'lishi mumkin. Ehtimol, hamma Next Big Thing loyihasida ishlamoqda, qachondir to'satdan kimdir Last Big Thing loyihasidagi xatolarni tuzatishga kirishishi kerak. Chiqarish tartibi o'zgaruvchan va moslashuvchan bo'lganda kerakli kod modifikatsiyasini qanday boshqarish mumkin? (Haqiqatan ham kulgili paytlar.)
  • Jadval tuzilmalarini o'zgartirish ma'lumotlarni o'zgartirishni anglatadi va orqaga qarab muvofiqligi bilan shug'ullanish juda qiyin bo'lishi mumkin. Siz "DeltaFactor" ustunini qo'shasiz, yaxshi, shuning uchun siz barcha mavjud (o'qing: eskirgan) ma'lumotlar uchun ushbu ezoterik qiymatni to'ldirish uchun nima qilasiz? Siz qo'shasiz yangi stol qidirish va mos keladigan ustun, ammo uni mavjud qatorlar uchun qanday to'ldirish kerak? Bunday holatlar tez-tez sodir bo'lmasligi mumkin, ammo ular sodir bo'lganda, buni o'zingiz qilishingiz kerak. Uchinchi tomon vositalari sizning biznesingiz mantig'ining ehtiyojlarini oldindan ko'ra olmaydi.

Asosan, menda har bir ma'lumotlar bazasi uchun CREATE skript bor, keyin ALTER skriptlari ketma-ketligi mavjud, chunki bizning kod bazamiz vaqt o'tishi bilan o'zgarib turadi. Har bir skript uni ishga tushirish mumkinligini tekshiradi: bu ma'lumotlar bazasining to'g'ri "ko'rinishi", kerakli skriptlar bajarilgan, bu skript allaqachon ishlayapti. Tekshiruvlar topshirilgandan keyingina skript uning o'zgarishlarini amalga oshiradi.

Asbob sifatida biz SourceGear Fortress-dan asosiy manba kodini boshqarish, Redgate SQL Compare-ni umumiy qo'llab-quvvatlash va muammolarni bartaraf etish uchun foydalanamiz va bir nechta serverlar va ma'lumotlar bazalariga o'zgartirishlar kiritilgan skriptlarni "ommaviy ravishda" tarqatish uchun SQLCMD-ga asoslangan bir qator uy skriptlarini ishlatamiz va kim murojaat qilganini kuzatamiz. ma'lumotlar bazalariga qaysi skriptlar qaysi vaqtda. Yakuniy natija: Bizning barcha ma'lumotlar bazalarimiz barqaror va barqaror va biz istalgan vaqtda qaysi versiya ekanligini yoki ekanligini osonlikcha isbotlashimiz mumkin.

Ma'lumotlar bazasini o'zgartirish yoki qidirish jadvallari kabi narsalarga qo'shimchalarni skriptga yozib olish va manbani boshqarish uchun saqlashni talab qilamiz. Keyin ular boshqa dasturiy ta'minot versiyasini tarqatish kodlari singari joylashtiriladi. Bizning ishlab chiquvchilarimiz tarqatish huquqiga ega bo'lmaganligi sababli, ular skriptlarni yaratishdan boshqa iloji yo'q.

Men odatda MS Server Management Studio-dan sql-ni boshqarish, ma'lumotlar bilan ishlash, ma'lumotlar bazalarini ishlab chiqish va disk raskadrovka uchun foydalanaman, agar ba'zi ma'lumotlarni sql skriptiga eksport qilish kerak bo'lsa yoki ma'lumotlar bazasida biron bir murakkab ob'ekt yaratish kerak bo'lsa, men EMS SQL Management Studio-dan foydalanaman SQL Server uchun, chunki u erda men aniqroq ko'rishim mumkinki, ushbu muhitdagi kodimning ingichka bo'limlari va vizual dizayni menga osonlikcha yordam beradi

SQL Server (2005/2008 / Azure) uchun bsn ModuleStore uchun JB sxemasining to'g'ri versiyasi bilan bog'liq muammolarni hal qilishga urinayotgan ochiq manbali loyiham bor (LGPL litsenziyasiga ega). Butun jarayon Filipp Kellining bu erdagi posti bilan izohlangan tushunchaga juda yaqin.

Asosan, asboblar qutisining alohida qismi JB sxemasining SQL Server ma'lumotlar bazasi ob'ektlarini standart formatlash bilan fayllarga yozadi, shuning uchun faylning tarkibi faqat ob'ekt aslida o'zgargan taqdirda o'zgaradi (VS tomonidan tuzilgan skriptlardan farqli o'laroq, bu ham skriptlarni yaratadi va hokazo). ., deyarli bir xil bo'lsa ham, barcha o'zgartirilgan ob'ektlarni belgilash).

Agar siz .NET dan foydalansangiz, asboblar qutisi bundan oshib ketadi: bu sizga SQL skriptlarini kutubxonaga yoki dasturga (ichki resurslar sifatida) kiritishga imkon beradi va keyin taqqoslangan o'rnatilgan skriptlarni ma'lumotlar bazasidagi mavjud holat bilan taqqoslaydi. Jadvaldan tashqari o'zgarishlar (Martin Fovler tomonidan belgilab qo'yilgan "halokatli o'zgarishlar" bo'lmagan) avtomatik ravishda yoki talabga binoan qo'llanilishi mumkin (masalan, ko'rinishlar, funktsiyalar, saqlangan protseduralar, turlar, indekslar kabi ob'ektlarni yaratish va o'chirish) va o'zgartirish skriptlari (ularni qo'lda yozish kerak) xuddi shu jarayonda qo'llanilishi mumkin; yangi jadvallar, shuningdek ularni sozlash ma'lumotlari yaratiladi. Yangilanishdan so'ng ma'lumotlar bazasi sxemasi yana ssenariylarga nisbatan taqqoslanib, o'zgarishlar kiritilishidan oldin ma'lumotlar bazasi muvaffaqiyatli yangilanadi.

Barcha skript va taqqoslash kodlari SMO holda ishlaydi, shuning uchun dasturlarda bsn ModuleStore-dan foydalanganda sizda SMO-ga bog'liqlik yo'q.

Ma'lumotlar bazasiga qanday kirishni xohlaganingizga qarab, asboblar to'plami yanada ko'proq narsani taklif qiladi - bu ORM ning ba'zi imkoniyatlarini amalga oshiradi va saqlangan protseduralarni chaqirish uchun juda yaxshi va foydali frontal yondashuvni, shu jumladan native .NET XML sinflari bilan shaffof XML-ni qo'llab-quvvatlaydi va shuningdek, IEnumerable sifatida TVP (Jadvalda baholanadigan parametrlar) uchun

Bu erda saqlangan proc va udf va jadvaldagi triggerlarni kuzatib borish uchun mening skriptim.

    Mavjud proc manba kodini saqlash uchun jadval yarating

    Mavjud barcha trigger va skript ma'lumotlari bilan jadvalni AOK qiling

    Ularga kiritilgan o'zgarishlarni kuzatib borish uchun DDL triggerini yarating

    / ****** Ob'ekt: Jadval. Ssenariy sanasi: 17.09.2014 11:36:54 AM. (ID (1, 1) NULL EMAS, (1000) NULL, (1000) NULL, (1000) NULL, (1000) NULL, NULL, NTEXT NULL, ASOSIY ASOSHA KEY KLUSTER (ASC)) (PAD_INDEX \u003d OFF, STATISTICS_NORECOMPUTE \u003d OFF, IGNORE_DUP_KEY \u003d OFF, ALLOW_ROW_LOCKS \u003d ON, ALLOW_PAGE_LOCKS \u003d ON) ON) ON GO ALTER TABLE. O'RNATIShGA O'RNATISh UChUN QARShI NAVOZI ("") QO'SHING. (,,,,,) SELECT "sa", "loginitialdata", r.ROUTINE_NAME, r.ROUTINE_TYPE, GETDATE (), r.ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES r UNION SELECT "sa", "loginitialdata", v.TAB "view", GETDATE (), v.VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS v UNION SELECT "sa", "loginitialdata", o.NAME, "trigger", GETDATE (), m.DEFINITION FROM sys.objects o JOIN sys.sql_modules. m ON.Oject_id \u003d m.object_id WHERE o.type \u003d "TR" DATABASE ON CREATE_PROCEDURE, ALTER_PROCEDURE, DROP_PROCEDURE, CREATE_INDEX, ALTER_INDEX, DROP_INDEX, CREATE_TRIGRE, AL, DEKLARNING NOKTORINI O'RNATISH @data XML SET @data \u003d Eventdata () INSERT INTO sysupdatelog VALUES (@ data.value ("(/ EVENT_INSTANCE / LoginName)", "nvarchar (255)"), @ data.value ("(/ EVENT_INSTANCE) / EventType) "," nvarchar (255) "), @ data.value (" (/ EVENT_INSTANCE / ObjectName) "," nvarchar (255) "), @ data.value ("(/ EVENT_INSTANCE / ObjectType)", "nvarchar (255)"), getdate (), @ data.value ("(/ EVENT_INSTANCE / TSQLCommand / CommandText)", "nvarchar (max)")) NOCOUNT OFF OFF SET GO SET ANSI_NULLS OFF, GO SET QUOTED_IDENTIFIER OFF GO GO ENABLE TRIGGER on DATABASE GO

01/05/15 28.1K

Ba'zan siz haqiqatan ham fikrlaringizni tartibga solishni, javonlarga qo'yishni xohlaysiz. Va alifbo va tematik ketma-ketlikda yanada yaxshiroq, natijada fikrlash ravshanligi paydo bo'ladi. Endi tasavvur qiling, qanday tartibsizlik yuz beradi " elektron miya»Barcha ma'lumotlar va Microsoft SQL Server aniq tuzilmasiz har qanday kompyuter:

MS SQL Server

Ushbu dasturiy mahsulot Microsoft korporatsiyasi tomonidan ishlab chiqilgan relyatsion ma'lumotlar bazasini boshqarish tizimi (DBMS). Ma'lumotlarni boshqarish uchun maxsus ishlab chiqilgan Transact-SQL tili ishlatiladi. Ma'lumotlar bazasini tanlash va o'zgartirish uchun til buyruqlari tuzilgan so'rovlarga asoslanadi:


Relyatsion ma'lumotlar bazalari barchaning o'zaro bog'liqligi asosida qurilgan strukturaviy elementlarshu jumladan, ularning uyasi tufayli. Relyatsion ma'lumotlar bazalari eng keng tarqalgan ma'lumotlar turlarini qo'llab-quvvatlaydi. Natijada, SQL Server triggerlar va saqlangan protseduralardan foydalangan holda ma'lumotlarni dasturiy jihatdan tuzilishini qo'llab-quvvatlaydi.

MS SQL Server xususiyatlari haqida umumiy ma'lumot


Ma'lumotlar bazasi tizimi Microsoft tomonidan ishlab chiquvchilar uchun yaratilgan uzoq muddatli ixtisoslashtirilgan dasturiy ta'minot zanjirining bir qismidir. Bu shuni anglatadiki, ushbu zanjirdagi barcha aloqalar (dastur) bir-biri bilan chuqur birlashtirilgan.

Ya'ni, ularning vositalari bir-biri bilan osonlikcha ta'sir o'tkazadi, bu dasturiy ta'minot kodini ishlab chiqish va yozish jarayonini ancha osonlashtiradi. Bunday munosabatlarning misoli - MS Visual Studio dasturlash muhiti. Uning o'rnatish paketi allaqachon SQL Server Express Edition-ni o'z ichiga oladi.

Albatta, bu jahon bozoridagi yagona mashhur MBB emas. Ammo u ishlaydigan kompyuterlar uchun ko'proq ma'qul windows boshqaruvi, ushbu operatsion tizimga yo'naltirilganligi tufayli. Va nafaqat shu sababli.

MS SQL Serverning afzalliklari:

  • Ishlash darajasi va xatolarga bardoshliligi yuqori darajada;
  • Bu ko'p foydalanuvchidan iborat ma'lumotlar bazasi va mijoz-server printsipi asosida ishlaydi;

    Tizimning mijoz qismi maxsus so'rovlarni yaratishni va ularni qayta ishlash uchun serverga yuborishni qo'llab-quvvatlaydi.

  • Windows operatsion tizimi bilan yaqin integratsiya;
  • Masofaviy ulanishlarni qo'llab-quvvatlash;
  • Ma'lumotlarning mashhur turlarini qo'llab-quvvatlash, shuningdek triggerlar va saqlangan protseduralarni yaratish qobiliyati;
  • Foydalanuvchi rollari uchun o'rnatilgan qo'llab-quvvatlash;
  • Ma'lumotlar bazasini zaxira qilishning kengaytirilgan funktsiyasi;
  • Xavfsizlikning yuqori darajasi;
  • Har bir sonda bir nechta ixtisoslashtirilgan nashrlar mavjud.

SQL Server evolyutsiyasi

Ushbu ommabop ma'lumotlar bazasining xususiyatlari uning barcha versiyalarining evolyutsiyasi tarixini ko'rib chiqishda osonlikcha aniqlanadi. Batafsilroq, biz faqat ishlab chiquvchilar muhim va tub o'zgarishlarni amalga oshirgan nashrlari haqida to'xtalamiz:

  • Microsoft SQL Server 1.0 - 1990 yilda chiqarilgan. Hatto o'sha paytda ham mutaxassislar ko'p foydalanuvchi rejimida maksimal yuklanganda ham ma'lumotlarni qayta ishlashning yuqori tezligini qayd etdilar;
  • SQL Server 6.0 - 1995 yilda chiqarilgan. Ushbu versiya dunyodagi birinchi kursorlarni qo'llab-quvvatlash va ma'lumotlarni replikatsiya qilishni taklif qiladi;
  • SQL Server 2000 - ushbu versiyada server butunlay yangi dvigatel oldi. O'zgarishlarning aksariyati dasturning faqat foydalanuvchi tomoniga ta'sir qildi;
  • SQL Server 2005 - DBMS miqyosi kengaytirildi, boshqarish va boshqarish jarayoni juda soddalashtirildi. .NET dasturlash platformasini qo'llab-quvvatlash uchun yangi API joriy etildi;
  • Keyingi nashrlar DBMlarning o'zaro ta'sirini rivojlanish darajasiga ko'tarishga qaratilgan bulutli texnologiyalar va biznes razvedka vositalari.

Tizimning asosiy to'plami SQL Serverni sozlash uchun bir nechta yordam dasturlarini o'z ichiga oladi. Bunga quyidagilar kiradi:


Konfiguratsiya menejeri. Barchani boshqarishga imkon beradi tarmoq sozlamalari va ma'lumotlar bazasi server xizmatlari. Tarmoqdagi SQL Serverni sozlash uchun ishlatiladi.
  • SQL Server xatosi va undan foydalanish to'g'risida hisobot:


Yordamchi dastur Microsoft-ning qo'llab-quvvatlashiga xatolar to'g'risida hisobot yuborishni sozlash uchun ishlatiladi.


Ma'lumotlar bazasi serverining ish faoliyatini optimallashtirish uchun foydalaniladi. Ya'ni, SQL Serverning ishlashini DBMSning ba'zi funktsiyalari va tarkibiy qismlarini yoqish yoki o'chirib qo'yish orqali o'zingizning ehtiyojlaringizga moslashtirishingiz mumkin.

Microsoft SQL Server-ga kiritilgan yordam dasturlari to'plami dasturiy ta'minot to'plamining versiyasi va nashriga qarab farq qilishi mumkin. Masalan, 2008 yilgi versiyada siz topa olmaysiz SQL Server sirt maydoni konfiguratsiyasi.

Microsoft SQL Server-ni ishga tushirish

Masalan, ma'lumotlar bazasi serverining 2005 yilgi versiyasidan foydalanamiz. Serverni bir necha usulda ishga tushirish mumkin:

  • Yordamchi dastur orqali SQL Serverni sozlash menejeri... Chap tarafdagi dastur oynasida "SQL Server 2005 Services" -ni tanlang, o'ngda esa ma'lumotlar bazasi serverining kerakli namunasini tanlang. Uni belgilang va sichqonchaning o'ng tugmachasining pastki menyusida "Ishga tushirish" -ni tanlang.

  • Atrof muhitdan foydalanish SQL Server Management Studio Express... U Express edition o'rnatish paketiga kiritilmagan. Shuning uchun, uni Microsoft-ning rasmiy veb-saytidan alohida yuklab olish kerak.

Ma'lumotlar bazasi serverini ishga tushirish uchun biz dasturni ishga tushiramiz. Muloqot oynasida " Server ulanishi"" Server nomi "maydonida biz kerakli misolni tanlang. Dalada " Autentifikatsiya"Qiymatni qoldiring" Windows autentifikatsiyasi". Va "Ulanish" tugmachasini bosing:

SQL Server ma'muriyati asoslari

MS SQL Server-ni ishga tushirishdan oldin uning konfiguratsiyasi va boshqaruvining asosiy xususiyatlari bilan qisqacha tanishib chiqishingiz kerak. Dasturiy ta'minot bazasini bir nechta kommunal xizmatlarini batafsilroq ko'rib chiqishni boshlaymiz:

  • SQL Server sirt maydoni konfiguratsiyasi - ma'lumotlar bazasi serverining biron bir xususiyatini yoqish yoki o'chirishni xohlasangiz, bu erga murojaat qilishingiz kerak. Oynaning pastki qismida ikkita nuqta bor: birinchisi javob beradi tarmoq parametrlari, ikkinchisida siz sukut bo'yicha o'chirilgan xizmatni yoki funktsiyani faollashtirishingiz mumkin. Masalan, T-SQL so'rovlari orqali .NET doirasi bilan integratsiyani yoqing:

Agar siz qulflashning etishmasligini bartaraf etish uchun boshqa ma'lumotlar bazasida qulflash sxemalarini yozgan bo'lsangiz (men kabi), siz o'zingizni qulflash bilan shug'ullanishingiz kerak bo'lishi mumkin. Sizni ishontirib aytamanki, siz qulflash menejeriga to'liq ishonishingiz mumkin. Biroq, SQL Server qulflarni boshqarish uchun bir nechta usullarni taklif qiladi, biz ularni ushbu bo'limda batafsil ko'rib chiqamiz.

Qulflash sozlamalarini qo'llamang yoki izolyatsiya darajasini tasodifiy ravishda o'zgartirmang - tortishuvlar va operatsiyalarning yaxlitligini muvozanatlash uchun SQL Server blokirovkalari menejeriga ishoning. Ma'lumotlar bazasi sxemasi yaxshi tuzilganligiga to'liq amin bo'lsangiz va dastur kodi so'zma-so'z jilolangan holda, ma'lum bir muammoni hal qilish uchun siz qulf menejerini biroz chimchilashingiz mumkin. Ba'zi hollarda, to'siq qo'ymaslik uchun tanlangan so'rovlarni o'rnatish ko'p muammolarni hal qiladi.

Ulanishning izolyatsiya darajasini belgilash

Izolyatsiya darajasi ulanishdagi umumiy yoki maxsus qulfning davomiyligini belgilaydi. Izolyatsiya darajasini belgilash barcha ulanish davomida yoki bitta izolyatsiya darajasini boshqasiga aniq almashtirmaguningizcha ishlatiladigan barcha so'rovlarga va barcha jadvallarga ta'sir qiladi. Quyidagi misol sukut bo'yicha qattiqroq izolyatsiyani o'rnatadi va takrorlanmaydigan o'qishni oldini oladi:

ISHLAB CHIQARISH IQTISODIYoTINING O'RNATILIShINI QAYTARILADIGAN O'QING. Izolyatsiyaning haqiqiy darajalari:

Shikoyat qilmasdan o'qingmi? seriyalash mumkin

Maqola o'qidingizmi? oniy rasm

Qayta o'qish

Joriy izolyatsiya darajasi ma'lumotlar bazasining yaxlitligini tekshirish (DBCC) buyrug'i yordamida tekshirilishi mumkin:

DBCC USEROPTIONS

Natijalar quyidagicha bo'ladi (qisqartirilgan):

Variant qiymatini o'rnating

izolyatsiya darajasi takrorlanadigan o'qish

Izolyatsiya darajalari, shuningdek, blokirovka parametrlari yordamida so'rov yoki jadval darajasida o'rnatilishi mumkin.

Ma'lumotlar bazasini oniy tasvirni darajasini izolyatsiyadan foydalanish

Ma'lumotlar bazasining oniy rasmlarini ajratish darajasi uchun ikkita variant mavjud: oniy rasm va o'qilgan rasm. Oniy tasvirni ajratish blokirovka qilish masalalari bilan shug'ullanmasdan takrorlanadigan o'qish kabi ishlaydi. O'qilgan oniy tasvirni ajratish SQL Serverning standart o'qish darajasiga taqlid qiladi, shu bilan birga to'sib qo'yilgan muammolarni olib tashlaydi.

Tranzaktsion izolyatsiya odatda ulanish darajasida o'rnatilsa, oniy tasvirni ajratish ma'lumotlar bazasi darajasida tuzilgan bo'lishi kerak, chunki u

ma'lumotlar bazasidagi qatorlarning versiyasini samarali ravishda kuzatib boradi. Row versioning - bu TempDB ma'lumotlar bazasida satrlarning nusxalarini yangilash uchun yaratadigan texnologiya. TempDB ma'lumotlar bazasining asosiy yuklanishidan tashqari, satr versiyasi 14 baytli satr identifikatorini qo'shadi.

Snapshot izolyatsiyasidan foydalanish

Quyidagi parcha oniy tasvirni ajratish darajasini ta'minlaydi. Ma'lumotlar bazasini yangilash va oniy tasvirni ajratish darajasini ta'minlash uchun ma'lumotlar bazasiga boshqa ulanishlarni amalga oshirish kerak emas.

Ma'lumotlar bazasini o'zgartirish Ezop

ALLOW_SNAPSHOT_ISOLATION-ni O'RNATING

| Ma'lumotlar bazasida oniy tasvirni ajratish yoqilganligini tekshirish uchun quyidagi SVS so'rovini bering: SELECT name, snapshot_isolation_state_desc FROM [* sysdatabases.

Birinchi tranzaksiya o'qishni boshlaydi va ochiq qoladi (ya'ni bajarilmaydi): AESop-dan FOYDALANING

Fable-dan qayerda FablelD \u003d 2 sarlavhasini tanlang

Siz quyidagi natijani olasiz:

Ayni paytda, ikkinchi tranzaksiya birinchi tranzaksiya bilan ochilgan qatorni yangilashni boshlaydi:

O'RNATISh ISOLOLASIYASI SAVDASINI O'RNATING.

TRAN-ni yangilashni boshlang

SET sarlavhasi \u003d "Oniy tasvirlar bilan tebranish"

Qaerda FablelD \u003d 2;

FABLE QAYERDA FablelD \u003d 2 ni tanlang *

Natija quyidagicha:

Oniy tasvirlar bilan tebranish

Ajablanarli emasmi? Ikkinchi bitim qatorni yangilashga muvaffaq bo'ldi, garchi birinchi tranzaksiya ochiq qolsa ham. Keling, birinchi bitimga qaytib, dastlabki ma'lumotlarni ko'rib chiqaylik:

Fable-dan FablelD \u003d 2 nomini tanlang

Natija quyidagicha:

Agar siz uchinchi va to'rtinchi operatsiyalarni ochsangiz, ular "Bald Knight" ning bir xil boshlang'ich qiymatini ko'rishadi:

Ikkinchi bitim o'zgarishlarni tasdiqlaganidan keyin ham birinchisi asl qiymatini ko'radi va keyingi barcha operatsiyalar yangisini, "Snapshots with Rocking" ni ko'radi.

ISOLATION Read Commited Snapshot-dan foydalanish

Xuddi shunday sintaksis yordamida Read Commited Snapshot izolyatsiyasi yoqilgan:

Ma'lumotlar bazasini o'zgartirish Ezop

READ_COMMITTED_SNAPSHOT YO'Q

Snapshot izolyatsiyasi singari, bu daraja shuningdek, qulflash muammolarini hal qilish uchun qator versiyasini ishlatadi. Oldingi bobda tasvirlangan misolga asoslanib, bu holda birinchi bitim ikkinchisi tomonidan amalga oshirilgan o'zgarishlarni darhol ko'radi.

Read Commited - SQL Server-ning sukut bo'yicha izolyatsiya darajasi bo'lganligi sababli, sizga ma'lumotlar bazasi parametrlarini o'rnatish kifoya.

Yozishdagi ziddiyatlarni hal qilish

Oniy tasvirni ajratish darajasi o'rnatilganda ma'lumotlarni yozadigan operatsiyalar avvalgi yozilmagan bitimlar tomonidan bloklanishi mumkin. Bunday qulf yangi operatsiyani kutishga majbur qilmaydi - bu shunchaki xatoga olib keladi. Bunday vaziyatlarni hal qilish uchun sinash iborasidan foydalaning. ... ... ushlang, bir necha soniya kutib turing va operatsiyani qayta urinib ko'ring.

Qulflash parametrlaridan foydalanish

Qulflash parametrlari qulflash strategiyasiga vaqtincha tuzatishlar kiritishga imkon beradi. Izolyatsiya darajasi umumiy ulanishga ta'sir etsa-da, qulflash parametrlari ma'lum bir so'rovning har bir jadvaliga xosdir (51.5-jadval). WITH (lock_option) opsiyasi so'rovning FROM bandidagi jadval nomidan keyin joylashtiriladi. Har bir jadval uchun vergul bilan ajratilgan bir nechta parametrlarni ko'rsatish mumkin.

Jadval 51.5. Bloklash variantlari

Parametr

blokirovka qilish

Tavsif

Izolyatsiya darajasi. U qulf o'rnatmaydi yoki ushlab turmaydi. Blokirovka qilinmaganiga teng

Bitimlar uchun standart izolyatsiya darajasi

Izolyatsiya darajasi. Bitim tasdiqlangunga qadar umumiy va eksklyuziv qulflarni ushlab turadi

Izolyatsiya darajasi. Bitim tugaguniga qadar umumiy qulfni ushlab turadi

Kutish o'rniga qulflangan chiziqlardan o'tish

Sahifa, hajm yoki jadval darajasi o'rniga satr darajasida qulflashni yoqish

Jadval darajasi o'rniga sahifa blokirovkasini yoqish

Qator, sahifa va darajadagi blokirovkalarni jadval darajasidagi donadorlikka avtomatik ravishda oshiring

Parametr

blokirovka qilish

Tavsif

Qulflarning qo'llanilmasligi va saqlanib qolmasligi. ReadUnCommited bilan bir xil

Eksklyuziv stol qulfini yoqadi. Boshqa operatsiyalarni jadval bilan ishlashiga yo'l qo'ymaslik

Bitim tasdiqlangunga qadar umumiy qulfni ushlab turish (Serializable-ga o'xshash)

Umumiy qulf o'rniga yangilanish qulfidan foydalanish va uni ushlab turish. Dastlabki o'qish va yozish o'rtasida boshqa yozuvlarni blokirovka qilish

Tranzaksiya tasdiqlanmaguncha eksklyuziv ma'lumotlar blokirovkasini ushlab turish

Dispetcher qulfning donadorligini oshirmaslik uchun quyidagi misol UPDATE bayonotining FROM bandida qulflash opsiyasidan foydalanadi:

OBXKites UPDATE mahsulotidan foydalaning

Mahsulotdan (RowLock)

SET ProductName \u003d ProductName + ‘Yangilangan 1

Agar so'rovda pastki so'rovlar mavjud bo'lsa, esda tutingki, har bir so'rov jadvaliga kirish qulf hosil qiladi, uni parametrlar yordamida boshqarish mumkin.

Indeks darajasidagi qulflash chegaralari

Izolyatsiya darajalari va blokirovka parametrlari ulanish va so'rovlar darajasida qo'llaniladi. Jadval darajasidagi qulflarni boshqarishning yagona usuli bu aniq indekslar asosida blokirovkaning donadorligini cheklashdir. Sp_indexoption tizimida saqlangan protsedura yordamida satr va / yoki sahifa blokirovkalari quyidagi sintaksis yordamida ma'lum bir indeks uchun o'chirib qo'yilishi mumkin: sp_indexoption ‘index_name 1,

AllowRowlocks yoki AllowPagelocks,

Bu bir qator maxsus holatlarda foydali bo'lishi mumkin. Agar jadval tez-tez sahifa blokirovkalari tufayli kutib tursa, ruxsat blokirovkalarini o'chirilgan holda satr darajasida blokirovka o'rnatiladi. Qulfning granulyatsiyasining pasayishi raqobatga ijobiy ta'sir ko'rsatadi. Bundan tashqari, agar jadval kamdan-kam yangilanadigan bo'lsa, lekin tez-tez o'qiladigan bo'lsa, satr va sahifa darajasidagi qulflar kiruvchi hisoblanadi; bu holda stol darajasida qulflash maqbuldir. Agar yangilanishlar kamdan-kam hollarda bo'lsa, unda maxsus stol qulflari katta muammo emas.

Sp_indexoption saqlangan protsedurasi mo'ljallangan puxta sozlash ma'lumotlar sxemalari; shuning uchun u indeks darajasida qulflashni qo'llaydi. Jadvalning asosiy kalitidagi blokirovkalarni cheklash uchun sp_help table_name dan foydalanib, birlamchi kalit indeksining nomini toping.

Quyidagi buyruq ProductCategory jadvalini kamdan-kam yangilanadigan klassifikator sifatida sozlaydi. Sp_help buyrug'i avval jadvalning asosiy kalit indeksining nomini ko'rsatadi: sp_help ProductCategory

Natija (qisqartirilgan):

indeks indeksi

ism tavsiflash kalitlari

PK_____________ ProductCategory 79A814 03 to'plamsiz, ProductCategorylD

pRIMARY-da joylashgan noyob, asosiy kalit

Mavjud asosiy kalitning haqiqiy nomi bilan tizimda saqlanadigan protsedura indeksni blokirovka qilish parametrlarini o'rnatishi mumkin:

EXEC sp_indexoption

'ProductCategory.RK__ ProductCategory_______ 7 9A814 03 ′,

'AllowRowlocks', FALSE EXEC sp_indexoption

'ProductCategory.PK__ ProductCategory_______ 79A81403 ′,

'AllowPagelocks', FALSE

Kutish vaqti tugashini boshqarish

Agar tranzaksiya qulfni kutayotgan bo'lsa, u holda kutish qulflash imkoni bo'lguncha davom etadi. Vaqt tugashining standart chegarasi yo'q - nazariy jihatdan u abadiy davom etishi mumkin.

Yaxshiyamki, siz lock_timeout ulanish parametrini ishlatib, blokirovka vaqtini belgilashingiz mumkin. Ushbu parametrni millisekundlar soniga o'rnating yoki agar vaqtni cheklamaslikni istasangiz, uni -1 ga qo'ying (bu asl qiymati). Agar ushbu parametr 0 ga o'rnatilsa, blokirovka bo'lsa, tranzaksiya darhol rad qilinadi. Bunday holda, dastur juda tez, ammo samarasiz bo'ladi.

Quyidagi so'rov blokirovka vaqtini ikki soniya (2000 millisekund) ga o'rnatdi:

SET Lock_Timeout 2 00 0

Agar tranzaksiya belgilangan kutish vaqti chegarasidan oshib ketgan bo'lsa, unda 1222 xato raqami hosil bo'ladi.

Aloqa darajasida blokirovka vaqtining chegarasini belgilash tavsiya etiladi. Ushbu qiymat odatdagi ma'lumotlar bazasiga qarab tanlanadi. Kutish vaqtini besh soniya qilib qo'yishni ma'qul ko'raman.

Ma'lumotlar bazasi bilan bahslashish samaradorligini baholash

Bir guruh foydalanuvchilarni sinab ko'rishda blokirovka va tortishuv masalalarini hal qilmaydigan ma'lumotlar bazasini yaratish juda oson. Haqiqiy sinov bu bir necha yuz foydalanuvchilar bir vaqtning o'zida buyurtmalarni yangilashidir.

Raqobat sinovlari to'g'ri tashkil etilgan bo'lishi kerak. Bir darajada, u ko'plab foydalanuvchilar tomonidan bir xil yakuniy shakldan bir vaqtning o'zida foydalanishni o'z ichiga olishi kerak. Doimiy ravishda simulyatsiya qiladigan .NET dasturi

foydalanuvchini ko'rish va ma'lumotlarni yangilash. Yaxshi sinov ma'lumotlar bazasini doimiy ravishda yuklaydigan va so'ngra sinov guruhiga dasturdan foydalanishga ruxsat beradigan 20 ta skript nusxasini ishlatish kerak. Qulfni hisoblash 49-bobda muhokama qilingan ishlash monitorini ko'rishga yordam beradi.

Ko'p o'yinchi raqobati rivojlanish davomida bir necha bor yaxshi sinovdan o'tkaziladi. MCSE imtihonlari qo'llanmasida aytilganidek, "haqiqiy hayot sinovi birinchi o'rinda turishiga yo'l qo'ymang."

Dastur qulflari

SQL Server juda murakkab qulflash sxemasidan foydalanadi. Ba'zan ma'lumotlardan tashqari jarayon yoki manbaga qulf kerak. Masalan, boshqa foydalanuvchi xuddi shu protseduraning boshqa nusxasini boshlagan bo'lsa, zararli protsedurani ishga tushirish kerak bo'lishi mumkin.

Bir necha yil oldin men atom elektr stantsiyalari loyihalari uchun kabel yo'naltirish dasturini yozdim. O'simliklar geometriyasi ishlab chiqilgan va sinovdan o'tkazilganda, muhandislar kabel uskunalari tarkibi, joylashuvi va ishlatiladigan kabellarning turlarini kiritdilar. Bir nechta kabellarni kiritgandan so'ng, dastur imkon qadar qisqa bo'lishi uchun ularni yotqizish marshrutini yaratdi. Shuningdek, protsedura kabel xavfsizligi muammolarini va ajratilgan mos kelmaydigan kabellarni hisobga olgan. Shu bilan birga, agar bir vaqtning o'zida bir nechta marshrutlash protseduralari bajarilgan bo'lsa, har bir misol bir xil kabellarni o'tkazishga harakat qildi, natijada natija noto'g'ri edi. Ilovalarni blokirovka qilish ushbu muammoni hal qilishning ajoyib echimi bo'ldi.

Ilovalarni blokirovka qilish dasturlarda foydalanish uchun butun SQL qulflar dunyosini ochadi. Ma'lumotlarni qulflanadigan manba sifatida ishlatish o'rniga, dastur qulflari sp__GetAppLock saqlangan protsedurasida e'lon qilingan barcha maxsus resurslardan foydalanishni bloklaydi.

Ilovalarni blokirovkalash operatsiyalarda qo'llanilishi mumkin; taqiqlash rejimi Shared, Update, Exclusive, IntentExclusice yoki IntentShared bo'lishi mumkin. Jarayonning qaytish qiymati blokirovkaning muvaffaqiyatli qo'llanilganligini ko'rsatadi.

0. Qulf muvaffaqiyatli o'rnatildi.

1. Qulf boshqa bir protsedura qulfini chiqarganda o'rnatildi.

999. Qulf boshqa sabab bilan o'rnatilmagan.

Sp_ReleaseApLock saqlangan protsedura qulfni chiqaradi. Quyidagi misol paketni yoki protsedurada dasturni blokirovkadan qanday foydalanish mumkinligini namoyish etadi: DECLARE @ShareOK INT EXEC @ShareOK \u003d sp_GetAppLock

@Resource \u003d "CableWorm",

@LockMode \u003d 'Eksklyuziv'

IF @ShareOK< 0

... Kod bilan ishlashda xato

... Dastur kodi ...

EXEC sp_ReleaseAppLock @Resource \u003d ‘CableWorm’

Ilova blokirovkalari Management Studio yoki sp_Lock yordamida ko'rilganda, ular APP turi sifatida ko'rsatiladi. Quyidagi ro'yxat yuqoridagi kod bilan bir vaqtda ishlaydigan sp_Lock-ning qisqartirilgan chiqishini ko'rsatadi: spid dbid Objld Indld Type Resurs Mode Status

57 8 0 0 APP Cabllf 94cl36 X GRANT

SQL Serverda dastur qulflari qanday ishlashiga e'tibor berish kerak bo'lgan ikkita kichik farqlar mavjud:

O'chirish avtomatik ravishda aniqlanmaydi;

Agar tranzaksiya qulfni bir necha bor qo'lga kiritgan bo'lsa, uni aynan o'sha marta chiqarishi kerak.

O'chirish

Tiqilinch - bu faqat bir nechta vazifalar bilan bitimlar bir-birining resurslari uchun raqobatlashganda paydo bo'ladigan maxsus vaziyat. Masalan, birinchi tranzaksiya A resursini qulflashga erishdi va u B resursini blokirovka qilishi kerak, shu bilan birga B resursini blokirovka qilgan ikkinchi bitim A manbasini blokirovka qilishi kerak.

Ushbu bitimlarning har biri ikkinchisining qulfini ochishini kutmoqda va ularning hech biri bajarilmaguncha bajarolmaydi. Agar tashqi ta'sir bo'lmasa yoki bitimlardan biri shu bilan yakunlansa ma'lum bir sabab (masalan, kutish vaqti bilan), keyin bu holat dunyoning oxirigacha davom etishi mumkin.

Ilgari blokirovka qilish jiddiy muammo edi, ammo endi SQL Server uni muvaffaqiyatli hal qila oladi.

Muammolarni yaratish

SQL Serverda blokirovka holatini yaratishning eng oson usuli bu Management Studio Query Editor-dagi ikkita ulanish (51.12-rasm). Birinchi va ikkinchi bitimlar bir xil qatorlarni yangilashga harakat qiladi, ammo teskari tartibda. PGetLocks protsedurasini boshlash uchun uchinchi oynadan foydalanib, siz qulflarni kuzatishingiz mumkin.

1. So'rovlar muharririda ikkinchi oyna yarating.

2. Ikkinchi oynada 2-bosqich blokirovka kodini joylashtiring.

3. Birinchi oynada 1-qadam blokirovka kodini joylashtiring va tugmachani bosing .

4. Ikkinchi oynada xuddi shunday 2-qadam kodini bajaring.

5. Birinchi oynaga qayting va 3-qadam blokirovka kodini bajaring.

6. Qisqa vaqtdan so'ng SQL Server boshi berk ko'chani aniqlaydi va uni avtomatik ravishda hal qiladi.

Quyida misolning dastur kodi keltirilgan.

- Tranzaksiya 1 - 1-qadam OBXKite-dan foydalaning

SET Familiyasi \u003d 'Jorgenson'

ContactCode \u003d 401 WH Qaerda

Puc. 51.12. Ikkala ulanishdan foydalanib Management Studio-da yopiq vaziyat yarating (ularning oynalari tepada)

Birinchi tranzaksiya endi ContactCode maydonida 101 qiymatiga ega bo'lgan eksklyuziv yozish blokirovkasiga ega. Ikkinchi bitim ProductCode maydonida 1001 qiymati bilan satrda eksklyuziv blokirovkaga ega bo'ladi va keyin birinchi tranzaksiya bilan allaqachon bloklangan yozuvni blokirovka qilishga harakat qiladi (ContactCode \u003d 101).

- Tranzaksiya 2 - 2-qadam OBXKitesdan foydalaning

\u003d 'DeadLock ta'mirlash to'plami'

Qaerda ProductCode \u003d '1001'

SET FirstName \u003d "Neals"

Qaerda ContactCode \u003d '101'

BOSHQARISh

Hali ham tiqilinch mavjud emas, chunki 2-tranzaksiya 1-tranzaksiya tugashini kutmoqda, ammo 1-tranzaksiya hali 2-tranzaksiya tugashini kutmayapti, bu holda, agar 1-tranzaksiya chiqsa va COMMIT TRANSACTION bayonotini bajarsa, ma'lumotlar manbai chiqadi va 2-tranzaksiya xavfsiz bo'ladi. uni to'sib qo'yish va o'z harakatlarini davom ettirish imkoniyatiga ega bo'ladi.

Muammo 1-tranzaksiya qatorni ProductCode \u003d l bilan yangilashga urinishda yuzaga keladi. Biroq, u buning uchun kerakli eksklyuziv qulfni qo'lga kiritmaydi, chunki ushbu yozuv 2-bitim bilan bloklangan:

- Tranzaksiya 1 - 3-qadam Mahsulot to'plamini yangilang

\u003d "DeadLock identifikatsiyasini tekshiruvchi"

Qaerda ProductCode \u003d '1001'

BOSHQARISh

Tranzaksiya 1 bir necha soniyadan so'ng quyidagi matnli xato haqida xabar beradi. Natijada paydo bo'lgan blokirovkani SQL Server Profiler-da ko'rish mumkin (51.13-rasm):

Server: Msg 1205, 13-daraja,

50-holat, 1-qatorli tranzaksiya (Jarayon identifikatori 51) bo'ldi

boshqa jarayon bilan blokirovka manbalarida qulflanmagan va blokirovka qurboni sifatida tanlangan. Bitimni qayta ishga tushiring.

Tranzaksiya 2 o'z ishini xuddi muammo bo'lmaganday bajaradi:

(1 ta qator (lar) ta'sirlangan)

(1 ta qator (lar) ta'sirlangan)

Shakl: 51.13. SQL Server Profiler sizga qulflar: Deadlock Graph hodisasi yordamida blokirovkalarni kuzatib borish va blokirovkaga sabab bo'lgan manbani aniqlashga imkon beradi.

Avtomatik qulfni aniqlash

Yuqoridagi kodda ko'rsatilgandek, SQL Server avtomatik ravishda blokirovka qilingan jarayonlarni tekshirish va tranzaktsiyalarni qaytarib berish orqali blokirovka holatini aniqlaydi.

eng kam ishni bajarganlar. SQL Server doimo o'zaro faoliyat bloklarning mavjudligini tekshiradi. Qulfni aniqlashning kechikishi noldan ikki soniyagacha bo'lishi mumkin (amalda men buni kutishim kerak bo'lgan eng uzoq vaqt - besh soniya).

Muammolarni hal qilish

Tugallanish yuz berganda, tijorat qurboni sifatida tanlangan ulanish o'z operatsiyasini qayta bajarishi kerak. Ishni qayta tiklash kerak bo'lganligi sababli, eng kam ishni bajarishga muvaffaq bo'lgan bitim orqaga qaytarilishi yaxshi - bu boshidanoq takrorlanadigan bitim bo'ladi.

Xato kodi 12 05 operatsionni qayta boshlashi kerak bo'lgan mijoz dasturiga tushishi kerak. Agar hamma narsa kerakli darajada ketadigan bo'lsa, foydalanuvchi hatto to'siq yuzaga kelganiga shubha qilmaydi.

Serverga tranzaktsiyalarning qaysi birini "jabrlanuvchi" sifatida tanlashini hal qilish o'rniga, tranzaktsiyaning o'zi "sovg'a" o'ynashi mumkin. Tranzaksiya amalga oshirilganda quyidagi kod SQL Serverga tranzaksiyani qaytarib olish to'g'risida xabar beradi:

DEADLOCKJPRIORITY-ni BOShQA O'RNATING

Tiqilinchlarni minimallashtirish

Garchi to'siqlarni aniqlash va hal qilish oson bo'lsa ham, ulardan qochish yaxshidir. Quyidagi ko'rsatmalar sizni to'siqlardan qochishga yordam beradi.

Tranzaktsiyalarni qisqa va keraksiz kodlardan saqlashga harakat qiling. Agar bitimda biron bir kod bo'lishi shart bo'lmasa, uni undan olish kerak.

Hech qachon tranzaksiya kodini foydalanuvchi kiritishiga bog'liq qilmang.

Xuddi shu tartibda paketlar va qulflar yaratishga harakat qiling. Masalan, avval A jadvali, keyin B, C jadvallari va boshqalar qayta ishlanadi. Shunday qilib, bitta protsedura ikkinchisini kutadi va blokirovkalarni ta'rifi bilan amalga oshirib bo'lmaydi.

Bir vaqtning o'zida namuna olingan ma'lumotlarni ma'lumotlar sahifalarida iloji boricha yaqinroq saqlash uchun jismoniy joylashishni rejalashtiring. Buning uchun normalizatsiyadan foydalaning va klasterli indekslarni oqilona tanlang. Qulflarning tarqalishini kamaytirish ularning kuchayib ketishiga yo'l qo'ymaydi. Kichkina qulflar sizga raqobatdan qochishga yordam beradi.

Agar kerak bo'lmasa, izolyatsiya darajasini oshirmang. Qattiqroq izolyatsiya darajasi qulflarning davomiyligini oshiradi.

Maqola sizga yoqdimi? Do'stlar bilan bo'lishish uchun: