Azure SQL Database е предложението на Microsoft за база данни като услуга, което предлага огромно количество гъвкавост и сигурност и, като част от платформата като услуга на Microsoft, може да се възползва от допълнителни функции. Тъй като базата данни Azure SQL е с обхват на база данни, има някои големи разлики, когато става въпрос за настройка на производителността.
Настройка на екземпляра
Много елементи на ниво екземпляр, които сте свикнали да конфигурирате при пълни инсталации, са забранени. Някои от тези елементи включват:
- Задаване на минимална и максимална памет на сървъра
- Активиране на оптимизиране за ad hoc работни натоварвания
- Промяна на прага на разходите за паралелизъм
- Промяна на максималната степен на паралелизъм на ниво екземпляр
- Оптимизиране на tempdb с множество файлове с данни
- Флагове за проследяване
Не се разстройвайте твърде много за някои от тях. Инструкцията ALTER DATABASE SCOPED CONFIGURATION позволява доста настройки за конфигурация на ниво индивидуална база данни. Това беше въведено с Azure SQL база данни и в SQL Server, започвайки с SQL Server 2016. Някои от тези настройки включват:
- Изчистете кеша на процедурите
- Задаване на MAXDOP на стойност, различна от нула
- Задайте модела за оценка на мощността на оптимизатора на заявки
- Активирайте или деактивирайте спешните корекции за оптимизиране на заявки
- Активиране или деактивиране на подслушването на параметри
- Активирайте или деактивирайте кеша за самоличност
- Разрешаване или деактивиране на компилиран план, който да се съхранява в кеша, когато партида се компилира за първи път.
- Активирайте или деактивирайте събирането на статистически данни за изпълнение за собствено компилирани T-SQL модули.
- Активирайте или деактивирайте онлайн опциите по подразбиране за DDL изрази, които поддържат синтаксиса ONLINE=ON/OFF.
- Активирайте или деактивирайте възобновяеми опции по подразбиране за DDL изрази, които поддържат синтаксиса RESUMABLE=ON/OFF.
- Активирайте или деактивирайте функцията за автоматично пускане на глобални временни таблици
Както можете да видите от списъка с конфигурации с обхват, имате много контрол и прецизност за фина настройка на специфични поведения за отделни бази данни. За някои клиенти ограниченията за контрол на ниво екземпляр може да имат отрицателно въздействие, докато други ще го видят като полза.
За компании, които имат база данни на клиент, нуждаещи се от пълна изолация, която е вградена в Azure SQL база данни. За тези, които се нуждаят от възможностите на SQL Server на ниво екземпляр, но биха искали да се възползват от предложението на Microsoft PaaS, има Azure SQL Managed Instance, който е с обхват на екземпляр. Целта там е да има 100% съвместимост на повърхността със SQL Server; така че можете да зададете минимална и максимална памет на сървъра, да активирате оптимизиране за adhoc работни натоварвания и да промените както MAXDOP, така и прага на разходите за паралелизъм. Tempdb на управляван екземпляр вече има няколко файла, но можете да добавите още и да увеличите размера по подразбиране. В много отношения наистина изглежда като пълната инсталация на SQL Server.
Настройка на заявка
Друга разлика между Azure SQL база данни и SQL Server е, че хранилището на заявки е активирано по подразбиране в Azure SQL база данни. Можете да изключите магазина на заявки, но след това ограничавате инструментите за интелигентна производителност в Azure Portal, които го използват. Съхранението на заявки е функция, която предоставя представа за ефективността на заявката и избора на план. Магазинът на заявки също така улавя хронология на заявки, планове и статистически данни по време на изпълнение, така че да можете да прегледате какво се случва. Искате ли да знаете коя заявка има най-високо време за прекомпилиране, време на изпълнение, брой изпълнения, използване на процесора, използване на паметта, най-много физически четения/записвания и други? Магазинът на заявки има тази информация. За SQL Server трябва да активирате тази функция за всяка база данни. Ако сте нов в Query Store, моята колежка Ерин Стелато има тричасов курс по Pluralsight, който ще ви помогне да започнете.
Категорията инструменти за интелигентна производителност има четири функции. Първо, прегледът на производителността предоставя обобщение на цялостната производителност на вашата база данни, като изброява 5-те най-добри заявки по консумация на процесора, всякакви препоръки от автоматична настройка, активност за настройка и текущи настройки за автоматична настройка. Тази целева страница ви дава бърз поглед върху представянето ви.
Второ, опцията за препоръки за производителност ще изброи всички текущи препоръки за създаване на индекси или ако някой индекси трябва да бъде отпаднат. Ако някакви скорошни действия са били завършени, ще видите и историята.
На трето място, Query Performance Insight е мястото, където можете да намерите по-задълбочена представа за потреблението на ресурси, като прегледате първите 5 заявки по CPU, Data I/O или Log I/O. Топ 5 заявки са цветно кодирани, така че можете бързо да видите процента на общата консумация визуално. Можете да щракнете върху идентификатора на заявката, за да получите повече подробности, включително SQL текста. Има и раздел за продължителни заявки. Наистина ми харесва, че Microsoft е включила функция като тази в Azure Portal безплатно. Той осигурява стойност, като предоставя на клиентите портал, за да видят най-често срещаните заявки. Това, което намирам за предизвикателство тук, е да имам начин да видя обща базова линия за сравнение на ден за ден, седмица за седмица и предходен месец. Въпреки това, за бърз анализ и общ преглед, Query Performance Insight е полезен.
Последната функция в тази категория е автоматичната настройка. Тук можете да конфигурирате плана за сила, да създадете индекс и да пуснете настройките на индекса. Можете да го включите, изключите принудително или да изберете да наследите от сървъра. Принудителният план позволява на Azure да избере това, което смята, че би било по-доброто от плановете за изпълнение за регресирани заявки. Тази функция съществува и в SQL Server 2017 Enterprise Edition като автоматична корекция на плана. Някои DBA се изнервят, когато чуят за функциите за автоматична настройка, тъй като се опасяват, че това може да замени нуждата от DBA в бъдеще. Винаги обичам да задавам въпроса „Колко време всеки ден отделяте за проактивна настройка на заявки?“. Огромният отговор е, че хората всъщност могат да прекарват много малко време в проактивна настройка и повечето отговарят, че единственият път, когато наистина „настройват“ е след пускане на код или когато потребителите започнат да се оплакват.
В допълнение към вградените инструменти и стойността на използването на Query Store, DMV също са лесно достъпни. Glenn Berry има цяла колекция от скриптове само за Azure SQL база данни, които можете да използвате. Един конкретен DMV, който искам да извикам, е sys.dm_os_wait_stats. Това ще изтегли от нивото на сървъра, така че ако наистина искате да разгледате статистиката за чакане за нивото на базата данни, ще трябва да използвате sys.dm_db_wait_stats вместо това.
Хардуер – мащабиране
Друга област на внимание, когато разглеждате производителността с Azure SQL база данни, е основният хардуер. Azure SQL база данни се оценява от транзакционни единици на база данни (DTU) и vCores. DTU са смесена мярка за CPU, памет и I/O и се предлагат на три нива; Основен, стандартен и премиум. Basic е само 5 DTU, Standard варира от 10-3 000 DTU, а Premium варира от 125-4 000 DTU. За нивата, базирани на vCore, имаме общо предназначение и бизнес критични нива, вариращи от 1-80 vCore.
В модела DTU, Basic трябва да се има предвид за разработка и тестване. Има само 7-дневно запазване на резервно копие, така че не бих го счел за жизнеспособен за никакви производствени данни. Стандартът е добър за ниски, средни и високи изисквания на процесора с умерено до ниско търсене на вход/изход. Базовото и стандартното ниво предлагат 2,5 IOPS на DTU с 5ms (четене), 10ms (запис). Премиум ниво е за средно до високо изискване на процесора и високо I/O предлага 48 IOPS на DTU с 2ms (четене/запис). Премиум ниво има хранилище, което е с порядък по-бързо от стандартното. В модела vCore имате процесори Gen4, които предлагат 7 GB RAM на физическо ядро и Gen 5 процесори, които предлагат 5,1 GB RAM на логическо ядро. От гледна точка на I/O General Purpose предлага 500 IOPS на vCore с 7000 макс. Business Critical предлага 5000 IOPS на ядро с 200 000 макс.
Резюме
Базата данни на Azure SQL е чудесна за онези системи, които се нуждаят от изолация на базата данни, докато Azure SQL Managed Instance е чудесен за онези среди, където се нуждаете от съвместимост на ниво екземпляр (поддръжка на кръстосани заявки за база данни). Когато трябва да настроите Azure SQL база данни, трябва да правите неща на ниво база данни, тъй като опциите на ниво екземпляр са забранени, така че настройките за конфигурация в обхвата на базата данни са вашите опции за фина настройка. С отстраняването на неизправности при запитвания с лошо представяне, имате някои вградени инструменти, които помагат, включително Query Store, и повечето от вашите редовни скриптове за настройка ще работят. Може да откриете, че все още имате нужда от повече, като базови показатели, повече исторически данни и възможността да създавате условия за съвет, които да ви помогнат да управлявате работните си натоварвания. Тук могат да помогнат мощни решения за мониторинг като SentryOne DB Sentry.
Когато всичко друго се провали или работното ви натоварване просто се е увеличило над текущите ви хардуерни ресурси, мащабирайте до по-високо ниво.