Поддържането на високопроизводителен SQL Server е от съществено значение не само за операциите на вашата организация, но и за вашите клиенти. Когато сървърите ви реагират бавно – или изобщо не отговарят – губите бизнес. Ето три ключови области, които трябва да наблюдавате отблизо, за да гарантирате оптимална производителност на SQL Server и начини за подобряване на производителността, ако вашите показатели показват, че имате проблем.
Индекси
Ако вашите индекси функционират добре, те допринасят за бърза, гладко работеща система. Въпреки това, ако вашите индекси страдат от някое от тези често срещани проблеми, може да откриете, че производителността на вашия SQL Server е негативно засегната.
Показател за наблюдение:коефициент на запълване
Коефициентът на запълване е настройка в SQL Server, която инструктира индексите да запълнят всяка страница от X процента. Изглежда интуитивно, че бихте искали да запълните всяка страница на 100 процента, но в действителност препълването на страници може да причини разделяне на страници. Ако администратор добави допълнителен ред към цяла страница, новият ред избутва около половината от съществуващите редове към нова страница и новият ред се добавя в долната част на първата страница.
Разделянето на страници може да причини проблеми с производителността поради увеличения брой I/O операции и потенциала за фрагментация. Въпреки това твърде много място на страница също може да навреди на производителността, тъй като ресурсите се изразходват ненужно.
За да получите най-добри резултати от производителността от настройките на фактора на запълване, не задавайте стойност за цялата система. Вижте вашите индекси поотделно и задайте коефициента на запълване на подходящо ниво за всеки. Например индексите, които често са фрагментирани, се нуждаят от различна стойност на фактора на запълване от индексите, които почти не се използват.
Показател за наблюдение:фрагментация
Фрагментацията на индекса възниква, когато потребителите добавят и изтриват записи. Преместването на нещата е нормална част от ежедневните операции на базата данни, но с течение на времето фрагментацията засяга производителността. Фрагментирането може да причини няколко проблема:
- Твърде много празно място на твърде много страници забавя сканирането и използва паметта ненужно
- Новите страници се добавят извън ред, така че отнема повече време на сървъра да намери данни
Когато фрагментацията започне да влияе на производителността, ще трябва да стартирате Rebuild или Reorganize, за да почистите фрагментираните индекси. Изпълнението на Rebuild ще създаде нов индекс и ще премахне допълнителното празно пространство. Reorganize подрежда листовите страници, за да може сървърът да намери данните по-лесно.
Буферен кеш
Когато SQL Server може да чете страници в буферния кеш, времето за отговор ще бъде по-бързо. Производителността страда, когато сървърът трябва да отиде на диск, за да намери страница, защото трябва да премине през серия от стъпки, преди да запази страницата в буфер и след това да я прочете. Има няколко показателя, които можете да проследявате, които ще ви помогнат да поддържате буферния кеш да работи с максимална производителност.
Показател за наблюдение:продължителност на живота на страницата
Очакваната продължителност на живота на страницата (PLE) е колко дълго една страница остава в буферния кеш, без да бъде извикана, преди да бъде изпратена обратно на диска. Увеличаването на PLE ще подобри производителността, но също така използва памет, която може да е необходима за други функции. Ако ще коригирате PLE, трябва да разберете колко памет можете да използвате, без да засягате производителността някъде другаде.
Показател за наблюдение:съотношение на попадане в кеша на буфера
Съотношението на попадане в буферния кеш е процентът на страниците, разположени в буферния пул, спрямо всички заявки за страници. Съотношението на попадане в буферния кеш трябва да е над 90 за най-добра производителност (т.е. SQL Server не трябва да чете от диск). Бъдете внимателни, когато анализирате данните за съотношението на попадения в кеша на буфера. Малко намаляване на съотношението може да не показва истински проблем. Анализирайте данните във връзка с PLE, за да определите дали съществува действителен проблем с производителността.
Оптимизиране на заявки
Бавните и неефективни заявки са един от най-често срещаните проблеми с производителността на SQL Server. Има много възможни причини вашите заявки да не работят добре, така че може да е трудно да се определи точната причина. Но има няколко неща, които можете да опитате в началото на разследването, които могат да подобрят ефективността на заявката с минимални усилия.
Показател за наблюдение:индексно сканиране
Проверката на здравето на вашия SQL Server трябва да бъде редовна част от вашите DBA задължения. Когато заявките се изпълняват бавно, отделете малко повече време с оптимизатора на заявки. Едно важно нещо, което трябва да проверите, е дали сканирането на индекс на SQL Server има някакви проблеми, които трябва да разрешите.
Друг потенциален убиец на производителността е сканирането на индекса, което се изпълнява по-често, отколкото е необходимо. Сканирането на индекса отнема много повече време от търсенето на индекс, тъй като заявката трябва да сканира всеки ред в търсене на полезни данни. Настройте своя оптимизатор на заявки, така че да търси индекси по-често, отколкото да ги сканира.
Пренаписването на проблемна заявка е друг начин за повишаване на производителността. Понякога опростяването на заявките ще премахне частта, която причинява застой на заявката. Можете също да опитате да добавите индекси, за да ускорите заявките, но това работи по-добре в някои случаи от други.
Добавянето на индекси е добро решение за полета, участващи в търсене, групиране или сортиране; често достъпни полета; и полета с уникални стойности. По принцип не е ефективно да добавяте индекси към полета с дублиращи се стойности като да/не или за малки таблици.
Мониторингът на производителността на SQL Server е от решаващо значение за поддържането на високопроизводителни бази данни. Поддържането на вашия SQL Server да работи с максимална скорост може да се постигне само чрез усърдно внимание към показателите за производителност. Добавете обсъдените по-горе показатели към контролния си списък за поддръжка, за да идентифицирате и коригирате проблемите с производителността на SQL Server на ранен етап.