Најдобри практики на SQL Server, Конфигурација за Дел 1
Дома »Најдобри практики за SQL сервер, Дел 1: Конфигурација

Читањето на водичи за најдобри практики за Microsoft SQL Server може да биде доста скучна работа. Откако се боревме низ технички водичи, водичи за најдобри практики, написи за TechNet и текстови на блогови од експерти за SQL, дојдовме до заклучок дека лесен за разбирање текст на оваа тема ќе биде корисен.
Нашата цел не е да навлегуваме во секоја поставка, туку да објасниме неколку работи што ќе ви помогнат да поставите и да доживеете проблеми со перформансите.
Заеднички наспроти посветени примери
Ако некоја апликација користи голем број шеми/зачувани процедури, ова може потенцијално да ја влоши работата на апликациите користејќи ја истата инстанца. Достапните ресурси може да се поделат или блокираат. Ова може да доведе до забавување на другите апликации базирани на бази на податоци на споделената инстанца на SQL Server. Поправање проблеми со перформансите може да биде скучна работа, затоа што треба да откриете која инстанца го предизвикува проблемот. И тоа честопати не е така лесно.
Како компаниите одговараат на ова прашање, обично се мери според цената на оперативните системи и лиценците на SQL. Ако перформансите на апликацијата се врвен приоритет, се препорачува посебна инстанца.
Microsoft не продава лиценци за SQL Server за сервери на пример, туку по јадро. Поради причини на трошоците, администраторите имаат тенденција да инсталираат онолку инстанци на SQL Server, колку што само еден сервер може да се справи, што може да доведе до големи проблеми со перформансите на долг рок.
Кога и да е можно, затоа треба да изберете посветени примери на SQL.
Разделување на SQL-датотеки на различни носачи на податоци
SQL Server користи многу различни I/O образци за читање податоци и датотеки за евиденција. Пристапот до датотеките со податоци е обично случаен, секвенцијално до датотеките со дневник на трансакции. Со ротирачки тврди дискови, главата за читање мора да се постави повторно заради случаен пристап до влез и влез. Секвенцијалниот пристап до податоци е поефикасен од случаенот. Ако одделите датотеки со различни обрасци за пристап, исто така, го минимизирате бројот на движења на читање на главата и со тоа ги оптимизирате перформансите на складирањето.
Користете RAID-10 системи за бинарни, податоци, датотеки за најавување и бази на податоци tempdb за најдобра можна изведба и достапност.
Димензионирање на бази на податоци tempdb
Поставете ја големината на датотеката на базите на податоци tempdb на максимална вредност со цел да се избегне фрагментација на дискот.
Конфликтите можат да се појават на страниците на GAM, SGAM и PFS кога SQL треба да пишува на специфични системски страници за да додели нови објекти. Бравите ги штитат (заклучуваат) овие страници во меморијата. На преоптоварен SQL сервер, може да потрае долго време да се заклучи системската датотека во базата на податоци tempdb, што доведува до подолги времиња на пребарување. Овој феномен се нарекува „спор на бравата“.
Правило за креирање датотеки со податоци tempdb:
- За 8 јадра
- 8 датотеки со податоци tempdb
Од SQL Server 2016, бројот на јадра на процесорот видлив за оперативниот систем се одредува автоматски за време на инсталацијата. Врз основа на ова, SQL Server го пресметува и конфигурира бројот на tempdb датотеки потребни за оптимални перформанси. Ова е значително подобрување во однос на претходните верзии - кудови за Мајкрософт!
Конфигурација на складирање
- Мин. Меморија на серверот
- Макс. Серверска меморија
- Макс. Број на работни нишки
- Складирање за создавање индекс
- Мин. Работна меморија по барање
Мин. Меморија на серверот
Со опцијата „Мин. Серверска меморија ”можете да ја одредите минималната количина на меморија за инстанцата на SQL Server. Бидејќи SQL Server е вистинска свинска меморија, користејќи ја секоја достапна RAM меморија, оваа поставка обично се користи кога оперативниот систем бара премногу меморија од SQL Server. Сепак, ваквиот став станува сè поважен поради технологиите за виртуелизација.
Макс. Серверска меморија
Со опцијата „Макс. Серверска меморија ”, поставена е максималната меморија за инстанцата на SQL Server. Особено е важно кога работат други апликации покрај SQL Server и сакате да се осигурате дека има доволно достапна меморија за нив.
Некои апликации едноставно ја користат меморијата достапна при стартување и не бараат поголема RAM меморија. Дури и ако беше потребно. Еве ја опцијата „Макс. Серверска меморија ”влегува во игра.
Во кластерот или фармата SQL Server, може да има повеќе примери на SQL Server, кои се натпреваруваат за ресурси. Со поставување ограничување на меморијата за секоја инстанца на SQL Server, ја избегнувате оваа конкуренција за RAM меморија и обезбедувате оптимални перформанси.
Запомнете да оставите барем 4-6 GB RAM меморија за оперативниот систем за да спречите проблеми со перформансите.
Макс. Број на работни нишки
Оваа опција се користи за оптимизирање на перформансите кога голем број клиенти се поврзани со SQL серверот. Обично, за секое барање за пребарување се креира посебна нишка на оперативниот систем. Сепак, користењето на една нишка по барање за пребарување за стотици врски со серверот може да потроши големи системски ресурси. Опцијата „Макс. Број на работнички нишки “помага да се подобрат перформансите затоа што SQL Server ви овозможува да креирате групи на работнички нишки што можат да се справат со поголем број барања за пребарување.
Стандардната вредност е 0, што му овозможува на SQL Server автоматски да го конфигурира бројот на работни теми при стартување. Оваа поставка е погодна за повеќето системи. „Макс. Број на работни нишки “е напредна опција и треба да се менува само во соработка со искусен администратор на базата на податоци.
Кога треба да го конфигурирате SQL Server, за да користите повеќе работни нишки? Ако просечната должина на редот по модул за распоред е повеќе од 1, може да има смисла да се зголеми бројот на нишки - но само ако оптоварувањето не е врзано за процесорот или има инаку долго време на чекање. Ако било кое од двете е точно, нема смисла да додаваме дополнителни нишки, бидејќи и тие би завршиле во редот.
Складирање за создавање индекс
Ова е исто така напредна опција што вообичаено не треба да се менува. Ова ја контролира максималната количина на RAM меморија наменета за создавање индекси. Стандардната вредност за оваа опција е 0, што значи дека SQL Server автоматски ќе ја конфигурира оваа поставка. Меѓутоа, ако имате потешкотии во градењето на индексот, можете да ја зголемите оваа вредност.
Мин. Работна меморија по барање
Кога е извршено пребарување, SQL Server се обидува да одвои оптимално количество меморија за него. Стандардно, има минимум 1.024 KB за секое барање. Препорачуваме да ја оставите зададената поставка на 0, така што SQL Server може динамично да управува со меморијата наменета за создавање индекс. Меѓутоа, ако SQL Server има повеќе RAM меморија отколку што е потребно за ефикасно извршување на програмата, перформансите на некои пребарувања може да се зголемат со зголемување на бројот. Сè додека на серверот е достапна бесплатна меморија што не ја користи SQL Server, други апликации или оперативниот систем, зголемувањето на вредноста може да ги подобри вкупните перформанси на SQL Server. Меѓутоа, ако нема бесплатна RAM меморија, дејството има прилично негативен ефект врз вкупните перформанси.
Конфигурација на процесорот
Хипертејнг
Hyperthreading е специјална имплементација на истовремено мулти-нишка (SMT) во процесорите на Intel за подобрување на паралелизацијата на пресметките (мултитаскинг) во x86 микропроцесори. Хардверот што користи хипер-нишка прави логичките процесори со хипер-нишка да изгледаат како физички процесори на оперативниот систем. SQL Server тогаш ги детектира физичките процесори што ги покажува оперативниот систем. На овој начин можете да ги искористите процесорите за хипертелекција.
Единствениот улов е што секоја верзија на SQL Server има свое ограничување на компјутерскиот капацитет.
NUMA (нееднаков пристап до меморија)
NUMA е метод за оптимизирање на пристапот до меморијата. И со нивна помош, брзината на процесорот може да се зголеми без да се зголеми употребата на процесорската магистрала. SQL Server поддржува NUMA и работи добро на хардверот NUMA без да бара посебна конфигурација.
Припадност на процесорот
Освен ако немате проблеми со перформансите, тешко дека некогаш ќе треба да ја промените зададената поставка за асоцијација на процесори. Сепак, вреди да се знае повеќе за тоа.
SQL Server поддржува афинитет на процесор преку две опции за маска:
- Афинитетна маска (позната и како маска за афинитет на процесорот)
- I/O афинитет
SQL Server ги користи сите процесори достапни во оперативниот систем. Распоредните модули се креираат за сите процесори со цел оптимално користење на ресурсите. Кога мултитаскинг, оперативниот систем или други апликации на SQL серверот можат да преместуваат нишки на процеси меѓу процесорите. Бидејќи SQL Server користи големи количини на ресурси, ова може да влијае на перформансите. За да се минимизира овој ефект, процесорите можат да бидат конфигурирани така што товарот на SQL Server е доделен на претходно избрана процесорска група. Ова е можно преку маската за афинитет на процесорот.
Опцијата за афинитет за I/O врзува I/O диск на SQL Server со одредена подгрупа на процесори. Во средини за обработка на трансакции преку Интернет (OLTP), ова подобрување може да ги подобри перформансите на темите на SQL Server кои предизвикуваат I/O операции.
Забелешка: Афинитетот за хардвер за индивидуални дискови или контролори на дискови не е поддржан.
Макс. Степен на паралелизам (MAXDOP)
Стандардно, SQL Server ги користи сите достапни процесори за извршување пребарувања. Иако ова е корисно за големи прашања, тоа може да влијае на перформансите и истовременоста. Подобар пристап е да се ограничи паралелизам на бројот на физички јадра во приклучокот за процесор. На пример, MAXDOP треба да биде поставен на 4 на SQL сервер со два приклучока за физички процесор со по четири јадра, без оглед на функцијата за хипер-нишка. MAXDOP не може да одреди кој процесор се користи. Наместо тоа, го ограничува максималниот број на процесори што можат да се користат за едно барање.
Праг на цена за истовременост
Стандардната вредност за оваа опција е 5. Оптимизаторот за пребарување го користи прагот на трошоците за да утврди дали има смисла да се креираат паралелни планови за пребарувања. 5 е многу мала вредност што е погодна само за чисти OLTP апликации (патем, тука спаѓа и DatAdvantage).
За системите што не се OLTP, препорачуваме прво да ја поставите вредноста на околу 50 и да ја прилагодите како што се бара. Дефинитивно треба да ја прилагодите вредноста за критичните прашања во рамките на апликацијата.
Други важни поставки
Инстант иницијализација на датотека
Ако му дадете на SQL Server привилегија „Изврши задачи за одржување на јачината на звукот“ на Виндоус, ќе имате подобри перформанси при одгледување датотеки со податоци.
Типично, Виндоус пишува многу нули веднаш штом корисникот има потреба од простор. Кога креирате датотека од 1 MB, Windows запишува 1MB нули на дискот за да ја иницијализира датотеката. Ако SQL Server има привилегија „Изврши задачи за одржување на јачината на звукот“, тој ги поттикнува Windows да го обележат потребниот простор како окупиран и веднаш да го вратат на SQL Server. Ова овозможува побрзо зголемување на датотеките.
Резервна компресија
Од SQL Server 2008r2, резервната компресија може да се активира со користење на полето за избор.
Како резултат, резервните копии бараат помалку простор за складирање, заземаат помалку време и се враќаат уште побрзо. Дефинитивно треба да ја користите оваа поставка.
Посветена врска со далечински администратор
Вашата поставка ви е потребна само ако нешто не е во ред со SQL Server.
Кога пристапувате преку Посветена администраторска врска (DAC), SQL Server ви обезбедува посебна врска, распоред на процесорот и меморија. Далечинско смена на проблеми на инстанца на SQL Server, која постојано е на 100% употреба на процесорот, е многу полесна кога имате посебни ресурси! Мора да бидете поврзани со SQL Server или физички преку конзолата или далечински преку RDP за да користите далечински DAC. Дефинитивно треба да ја користите и оваа поставка. Откако ќе се активирате, можете повторно да заборавите на тоа!
Заклучок
SQL Server обезбедува перформанси и приспособливост потребни за поддршка на апликации за производство на бази на податоци, под услов да се следат најдобрите практики.
Во нашиот следен пост на блогот, ќе ги разгледаме најдобрите практики за SQL Server во виртуелизирани средини.