ПредишенСледващото

Няколко пъти на седмица procyat съвети за това как ефективно да поддържа база данни на производството. Понякога въпросите идват от администраторите на бази данни, които са за изпълнение на нови решения и търсят помощ в монтиране практики услуги за характеристиките на новата база данни. Често въпроси идват от хора, които не са професионални администраторите на бази данни, но по една или друга причина, собствена база данни или да носят отговорност за него. Аз предпочитам да ги наричаме "неволни администраторите на бази данни." Задачата на тази статия е да осигури урок за най-добрите варианти за поддръжка на база данни SQL Server.

Както е случаят с повечето от задачите и процедурите в света на информационните технологии, Godea за не съществува база данни повод ефективни решения услуга, но има няколко ключови области, които почти винаги се нуждаят от внимание. личния ми топ пет от тези региони, изброени в никакъв определен ред на важност:

  • Файл с данни за управление и регистрационните файлове
  • индекс фрагментация
  • статистика
  • безразрушителен контрол
  • архивиране

През без надзор (или зле поддържани) база данни може да бъде проблем в една или повече от тези области, които в крайна сметка може да доведе до лошо изпълнение приложение или дори престоите и загуба на данни.

Файл с данни за управление и регистрационните файлове

Първата област Винаги препоръчваме да проверите при вземане на управление на бази данни - са параметрите, свързани с управлението на данни и лог файлове (транзакция). По-точно, трябва да гарантира, че:

  • данни и лог файловете са разделени един от друг и се изолират от останалата част на
  • Автоматично увеличение е конфигуриран правилно
  • Персонализирани автоматични файлове инициализация
  • Автоматично изключване компресия, и свиването не е част от нито един план за поддръжка

Когато данните и лог файлове (които, в идеалния случай, трябва да бъдат най-общо на различни обеми) са в същия обем с всяко друго приложение, което създава или разширява файлове, има възможност да подаде фрагментация. Файловете с данни са прекомерно фрагментиране файл може да направи малък принос за лошото представяне на заявки (по-специално тези, които сканирате много голямо количество данни). В регистрационните файлове, това може да доведе до много по-сериозен удар производителност, особено ако автоматичното продължаване се инсталира само на много малко увеличение на размера на всеки път, когато възникне такава необходимост файла.

Що се отнася до размера на данните и лог файлове, най-добре е да ги създават с подходящ първоначален размер. За файлове с данни, когато изберете оригиналния размер, трябва да се вземе под внимание възможността за добавяне на основата на допълнителните данни в близко бъдеще. Например, ако оригиналния размер на данни е 50 GB, но е известно, че в следващите шест месеца ще бъдат добавени към допълнителни 50 GB на данни, че има смисъл да незабавно да се установи размера на файла с данни 100 GB, вместо да го увеличи до този размер в рамките на няколко месеца.

С файлове, които се занимават списания, уви, това е малко по-сложно - трябва да се вземат предвид такива фактори като размера на сделката (дългосрочни сделки, които не могат да бъдат отстранени от дневника до завършване) и влезте резервната честота (тъй като това е, когато го отстранили неактивната част на дневника). За повече информация, вижте "8 стъпки към по-добро регистър на операциите на Пропускателна способност (" 8 стъпки за подобряване на производителността на регистъра на операциите ")", най-популярните в блог SQLskills.com, написана от жена ми, Кимбърли Трип (Kimberly Трип).

След размерите на файловете са определени за тях трябва да се наблюдава в различни точки, и трябва да се увеличи предварително на ръка, в точното време на деня. Автоматично увеличение следва да се остави като предпазна мярка, за всеки случай, така че файловете могат да се развиват, както е необходимо в случай на необичайни събития. Причината управлението на файла не трябва да оставя изцяло автоматично увеличение е фактът, че автоматичното увеличение на малки парченца води до фрагментиране на файлове и че автоматичното увеличение може да отнеме време, което пречи на работата приложение в неочаквани моменти.

автоматично увеличаване на размера трябва да се настрои на определена стойност, а не в проценти, за да се ограничи времето и пространството е необходимо да се увеличи автоматично, ако това се случи. Например, в случай на 100-гигабайтов размер на файла данни е желателно да се определи автоматично увеличение като 5 GB, а не, да речем, 10%. Това означава, че тя винаги ще се увеличи с 5 ГБ, независимо от текущия размер на файла, а не увеличаването на звука, след всяко изображение (10 GB, 11 GB, 12 GB, и така нататък).

Автоматично компресиране е особено вредно, защото тя се движи на всеки 30 минути във фонов режим и се опитва да компресирате в базата данни, за които възможността да се таксува автоматично компресиране. Този процес не е напълно предвидимо, тъй като компресира база данни с повече от 25% свободно пространство. Автоматично компресиране използва много ресурси и причинява изпълнение фрагментация превключването, така че не е желателно при всички обстоятелства. Тя трябва винаги да бъде прекратен с:

Планирайте редовен калайдисване, включително да издава команди, основаващи се на компресиране на данни на ръка е почти толкова лошо. Ако установите, че вашата база данни постоянно расте, след като планът за поддръжка го свива, че това се дължи на факта, че на базата на това място трябва за данните.

индекс фрагментация

Отделно от фрагментация на ниво файлова система и в лог файл също е възможно в рамките на фрагментация на файлове с данни в структурите, които съхраняват таблици с данни и показатели. Вътре файла с данни може да се случи два основни типа фрагментация:

Фиг. 1. Структурата на страниците на бази данни

Най-често срещаният вътрешен фрагментацията, причинена от тези промени, като например вложки, актуализации и ги изтрива, които могат да оставят празно място на страницата. Неправилно работен цикъл разположение може също да насърчи подробности фрагментация са дадени в документацията. В зависимост от схемата на маса / индекс и прилагане на изпълнението е празно място не може да бъде подходящ за повторна употреба след възникването му, което може да доведе до постоянно нарастване на неизползваното пространство в базата данни.

Помислете, например, маса от 100 милиона линии, където средната рекорд е с площ от 400 байта. С течение на времето, данните за кандидатстване променя модела ще доведе до средно 2800 байта свободно място на страницата. Общо пространство изисква от таблицата е 59 GB, това се получава чрез следното изчисление: 8096-2800 / 400 = 13 вписвания в 8-KB страници, след това се разделят 100 милиона до 13, за да се получи броя на страниците. Ако пространството не се губи, а след това на същата страница могли да се поберат до 20 вписвания, която намалява общото пространство, необходимо до 38 GB. Огромни спестявания!

Неизползвано пространство за данни / индексни страници могат следователно да доведе до запазване на същото количество данни за голям брой страници. Това води не само до по-голямо потребление на дисково пространство, но също така означава, че заявката е необходимо да се харчат повече I / O, за да прочетете същото количество данни. И всички тези допълнителни страници заемат повече място в кеша за данни, като по този начин, като памет на сървъра.

Фиг. 2 показва новосъздадените страници индекси с сто процента мито цикъл - цяла страница и физическата редът на страниците съответства на логическа последователност. Фиг. 3 показва фрагментацията, която може да се появи, след като случайни вложки / новини / изтрива.

Фиг. 2. новосъздадените страници индекси, без фрагментация, страниците са пълни с 100%

Раздробяването понякога могат да бъдат предотвратени чрез промяна на маса / индекс схемата, но както споменах по-горе, тя може да бъде много трудно или невъзможно. Ако превенцията е невъзможно, има начини за премахване на фрагментация след неговото начало - по-специално чрез намаляване или реорганизация на индекса.

Някои потребители просто решават да поправи или възстанови всички индекси всяка вечер или всяка седмица (например, с помощта на вариант с план за обслужване), а не разберете кои индекси са фрагментарни и какви ползи ще премахне фрагментирането. Въпреки, че това може да бъде добро решение за принудително DBA, които просто желае да прилага някакъв вид решение с минимални усилия, това може да бъде много лош избор за по-големи бази данни и системи, където ресурсите са в недостиг.

Независимо от използвания метод, е силно препоръчително редовно да търсят и премахване на фрагментация.

Процесорът за заявки е част от SQL Server, който решава как да се проведе разследване, а именно - как да се използват таблиците и индексите и да извършват всички операции по тях да дават резултати; това се нарича план за запитване. Сред най-важният принос на процеса на вземане на решения включва статистика, описваща разпределението на стойности на данни за колони в таблица или индекс. Очевидно е, че за да бъде полезно да се Процесор за обработка на заявките, статистическите данни трябва да бъдат точни и свежи, в противен случай непродуктивни планове за заявки могат да бъдат избрани.

Статистика генерирани чрез четене на данни маса / индекс и определяне на разпределението на данни за съответните колони. Статистика могат да бъдат изградени чрез сканиране на всички стойности на данните за определена колона (цялостна проверка), но също така може да бъде изградена на базата на процент от данните, посочени от потребителя (тестови примери). Ако разпределението на стойностите в колона е сравнително равномерно, примери от тестовете могат да бъдат достатъчни, и това прави създаване и актуализиране на статистическите данни по-бързо, отколкото с пълно сканиране.

Фиг. 4. Промяна на настройките на бази данни чрез SQL Server Management Studio

Ако искате да се актуализира статистиката като част от редовния план за поддръжка, трябва да сте наясно с трик. И актуализиране на статистическите данни и sp_updatestats използват предварително определени нива на събиране на данни по подразбиране (ако посочите някои) - и тя може да бъде по-малко от пълно сканиране. индекс възстановяване автоматично обновяване на статистиките, използвайки пълния сканирането. В случай на ръчно актуализиране на статистиката след индекс възстановяване, можете да получите още по-малко точна статистика! Това може да се случи, ако примери за изпитване от ръчно обновяване презаписва Пълното сканиране, създаване на индекс на възстановяване. От друга страна, статистиката не актуализират при реорганизацията на индекс.

Отново, много от тях имат план за поддръжка, която се актуализира, всички статистически данни в някакъв момент преди или след възстановяване на всички индекси - и без да го знаят, за да бъде по-малко точни статистически данни те могат да се окажат. Ако решите просто възстановяване на всички индекси от време на време, той ще се погрижи за статистиката. Ако изберете по-сложен начин на премахването на раздробяването, струва си да правиш, и услугата статистика. Предлагам следното:

  • Анализирайте индекси и да определи, на която индекс трябва да работи и как да дефрагментирате.
  • Актуализиране на статистическите данни за всички индекси, които са били възстановени.
  • Актуализиране на статистическите данни за всички не-индексирани колони.

безразрушителен контрол

Говорих за услугата, свързана с изпълнението. Сега е време да се премине към една история за откриването на щети и ограничаване.

Това е много малко вероятно, че базата данни, съдържаща се напълно безполезна информация, която никой не му пука - така че как може да се гарантира, че данните, остава непокътнат и възстановяване в случай на извънредна ситуация? Детайли консолидират цялостна стратегия за възстановяване след бедствия и висока надеждност, са извън обхвата на тази статия, но на първо място, което можете да направите няколко прости неща.

По-голямата част от нараняванията са причинени от "хардуер". Защо е в кавички? Е, оборудването тук - това всъщност е съкращение за "нещо в подсистемата за вход-изход, под SQL Server". I / O подсистема се състои от елементи, като операционната система, драйвери на файловата система, драйвери на устройства, RAID контролери, кабели, и мрежа се управлява. Много от местата, където те могат да бъдат (и са) проблеми.

Един от най-често срещаните проблеми на прекъсване на електрозахранването, когато устройството се записва на страница база данни. Ако дискът няма да бъде в състояние да завърши записа, преди той избяга от електричество (или ако напишете операции са кеширани и резервно захранване, не е достатъчно, за да почистите кеша на диска), резултатът може да е непълна страница образ на диска. Това може да се случи, защото на 8-KB страници в базата данни всъщност се състои от 16 съседни дискови сектори 512 байта. Непълно рекорд може да запише някои от секторите от новата страница, но оставят някои от секторите, в образа на предишната страница. Тази ситуация се нарича скъсан страница. Как може да се открие, когато това се случи?

В SQL Server осигурява механизъм за откриване на тази ситуация. Тя включва запазването на няколко бита от всеки сектор на страницата и за написването на конкретен модел на тяхно място (това се случи точно преди страницата се записват на диск). Ако четете шаблон страница се променя, SQL Server, знае, че страницата е "разкъсана" и повдига грешка.

Фиг. 5. Монтаж на предупреждение към всички сериозни грешки 24

Ако тази команда е нещо изключително, DBCC е намерил повреда в базата данни. Въпросът тогава става: "Какво да правите, ако DBCC CHECKDB установи увреждане?". Тук на сцената и има резервни копия.

В случай на повреда или друга неизправност, най-ефективните начини за възстановяване на възстановяване на база данни от архивни копия. Разбира се, това предполага наличието на такива копия, както и че те самите не са повредени. Твърде често хората искат да знаят как да се получи сериозно повредена база данни, за да работи отново, когато те не разполагат с резервно копие. Простият отговор е, че е невъзможно, поне без загуба на данни, които могат да нарушат всички бизнес логиката и релационни целостта на данните.

На второ място, пазят архиви в продължение на няколко дни, в случай, че един от тях е повреден - старата архива е по-добре от нищо. Може да разгледате и целостта на вашите архиви с помощта на RESTORE С VERIFYONLY (отново, вижте. Electronic документация). Ако създадете резервно копие вариант е използван с CHECKSUM, използвайки екип тест ще провери дали друга контролна архивиране и контролни страници от него.

Както можете да видите, за да се гарантира здравето и наличие на базата данни изисква няколко задължителни задачи. Тук е моят последен контролен лист за принудително администраторите на бази данни, които отидоха управление на бази данни:

Дадох статията екипа T-SQL, но много може да се направи от Управителния Studio. Надявам се, че ви е дал някои полезни насоки за ефективно поддържане на база данни.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!