Както всеки, който управлява бази данни, знае твърде добре, настройката на производителността на SQL Server е критична функция за осигуряване на оптимална производителност. Тъй като производителността зависи от различни фактори като памет, конфигурация, дизайн на заявка и използване на ресурси, изолирането на основната причина за влошаване на производителността не е малък подвиг.
Вместо да чака да възникнат проблеми с производителността, проактивната настройка на SQL Server ще гарантира, че вашите SQL изрази ще работят възможно най-ефективно, като помага на SQL да намери най-бързия маршрут за влизане и излизане, за да предостави резултатите от заявката ви.
Ако се борите с бавна производителност – или не сте от хората, които просто чакат да възникнат проблеми – ето три ключови области, в които да съсредоточите настройката на производителността на SQL Server, за да постигнете оптимална производителност и по-здрави системи.
Съвет №1:Оптимизирайте своя TempDB
Неправилно конфигурираният TempDB е често срещан виновник, когато се разглежда влошаването на производителността. Ако често попълвате своя TempDB, време е да разгледате какво трябва да промените.
Първо, проверете размера на TempDB. Няма твърдо и бързо правило за това колко голям трябва да бъде, но добро правило е да поддържате TempDB на 25 процента от най-голямата си база данни или същия размер като най-големия си индекс. Това предотвратява необходимостта от увеличаване на TempDB по време на повторно изграждане.
С TempDB, колкото по-бързо е устройството, толкова по-добре. Когато TempDB е поставен на бавен диск или на същото устройство като операционната система, със сигурност ще видите проблеми с производителността на базата данни. Ако е възможно, съхранявайте TempDB на специален локален SSD. Ако това не е възможно, следващата ви най-добра опция е да го запазите в отделен отделен том с достатъчно предварително разпределено дисково пространство.
Също така е важно да държите данните и регистрационните файлове отделно и да зададете голяма фиксирана стойност за автоматичен растеж на TempDB. В противен случай ще бъдете ударени с ненужни разходи всеки път, когато TempDB се запълни.
Контролирането на броя на TempDB файлове с данни допринася за оптимизирането на TempDB. Но големият въпрос е колко файла с данни на TempDB са ви необходими? В идеалния случай ще имате един файл с данни TempDB за всеки логически процесор, но не повече от осем общо (с някои изключения). Например, ако имате четири логически CPU, имате нужда от четири TempDB файла с данни. Ако имате 12 логически CPU, можете да имате осем TempDB файла с данни.
Съвет №2:Предотвратете затруднения в производителността
Има три основни типа тесни места в производителността на SQL Server които допринасят за ниската производителност:CPU, памет и I/O. Причините, симптомите и диагностиката се различават в зависимост от вида на затруднението, така че ето кратко ръководство за какво да внимавате:
Тесни места на процесора
Причина: Недостатъчни хардуерни ресурси
Симптоми: Постоянно високо използване на процесора
Показатели за наблюдение: % процесорно време, пакетни заявки/сек, SQL компилации/сек и SQL прекомпилации/сек
Тесни места в паметта
Причина: Ограничения в наличната памет и натиск върху паметта, причинени от дейността на SQL Server, системата или друго приложение
Симптоми: Бавна реакция на приложението, цялостно забавяне на системата и сривове на приложения
Показатели за наблюдение: Налична памет (КБ), Обща памет на сървъра (КБ), Памет на целеви сървър (КБ), Страници/сек, Страници за контролна точка/Сек, Отложени записи/Сек и Коефициент на попадане в буферния кеш
Тесни места за I/O
Причина: Прекомерно четене и запис на страници от база данни от и на диск
Симптоми: Дълго време за реакция, забавяне на приложенията и изчакване на задачите
Показатели за наблюдение: Средна дължина на опашката на диск, средна дискова сек/четене, средна дискова сек/запис, % време на диск, средно четене на диск/сек и средно записване на диск/сек
Съвет №3:Уверете се, че индексите са правилно проектирани
Индексите са чудесен начин за ускоряване на определени операции на SQL Server, но само ако са добре проектирани. Лошо проектираните индекси имат обратен ефект и са сигурен начин да убиете производителността на SQL Server.
Правилното настройване на тези четири области може да помогне да се гарантира, че индексите са правилно проектирани и да помогне, вместо да навреди на производителността на SQL Server.
Размер на таблицата
Не всяка таблица е добър кандидат за индексиране. Всъщност, ако таблицата е твърде малка, за SQL Server е много по-ефективно да търси цялата таблица, отколкото да се налага да търси в индекси. Разбира се, обратното е вярно за големите таблици, така че трябва да прецените потенциалните допълнителни разходи, когато решавате кои таблици ще се възползват от индексите.
Типове индекси
Технически, всяка таблица на база данни може да има един клъстериран индекс и безкраен брой неклъстерирани индекси, но знаете какво казват за „Само защото можете да направите нещо“...
Твърде много неклъстерирани индекси могат значително да забавят операциите за вмъкване и актуализиране, така че придържането към един клъстериран индекс и минималния брой абсолютно съществени неклъстерирани индекси е далеч по-добър избор за дизайн.
Съхранение на индекси
По време на фазата на проектиране изборът на подходящи критерии за съхранение на индекси е от решаващо значение за I/O производителността. Разделените клъстерни индекси и неклъстерираните индекси могат да се съхраняват в същата файлова група като основната таблица или могат да се съхраняват в друга файлова група. Съхраняването на неклъстериран индекс във файлова група, разположена на друго дисково устройство, може да подобри производителността на заявките, които го използват, тъй като не се влияе от едновременното четене на данните и индексните страници на SQL, извършвани на различни дискови устройства.
FILLFACTOR
FILLFACTOR указва процента пространство, което ще бъде запълнено на всяка страница с данни при създаване на индекс. Стойностите на FILLFACTOR могат да варират от 0 процента (никоя от страниците с данни не е попълнена) до 100 процента (страницата с данни е напълно запълнена). Когато проектирате своя индекс, изберете стойност FILLFACTOR, която ще оптимизира използването на страницата, като същевременно сведе до минимум риска от прекомерна фрагментация на индекса.
Превръщането на настройка на производителността на SQL Server част от стандартната ви рутина е отличен начин да гарантирате, че вашите бази данни работят с максимална производителност. Включването на тези три прости стъпки във вашите редовни планове за поддръжка на SQL Server значително ще подобри скоростта и производителността за вашите потребители.