Database
 sql >> Baza danych >  >> RDS >> Database

Opcje dostrajania wydajności bazy danych SQL Azure

Azure SQL Database to oferta bazy danych jako usługi firmy Microsoft, która oferuje ogromną elastyczność i bezpieczeństwo, a w ramach platformy Microsoft Platform-as-a-Service umożliwia korzystanie z dodatkowych funkcji. Ponieważ Azure SQL Database obejmuje zakres bazy danych, istnieją pewne duże różnice, jeśli chodzi o dostrajanie wydajności.

Dostrajanie instancji

Wiele elementów na poziomie instancji, które były używane do konfigurowania w pełnych instalacjach, jest niedostępnych. Niektóre z tych elementów to:

  • Ustawianie minimalnej i maksymalnej pamięci serwera
  • Włączanie optymalizacji dla obciążeń ad hoc
  • Zmiana progu kosztów dla równoległości
  • Zmiana maksymalnego stopnia równoległości na poziomie instancji
  • Optymalizacja tempdb z wieloma plikami danych
  • Flagi śledzenia

Nie przejmuj się zbytnio niektórymi z nich. Instrukcja ALTER DATABASE SCOPED CONFIGURATION umożliwia wiele ustawień konfiguracyjnych na poziomie indywidualnej bazy danych. Zostało to wprowadzone w Azure SQL Database i SQL Server, począwszy od SQL Server 2016. Niektóre z tych ustawień obejmują:

  • Wyczyść pamięć podręczną procedur
  • Ustawienie MAXDOP na wartość inną niż zero
  • Ustaw model szacowania kardynalności optymalizatora zapytań
  • Włącz lub wyłącz poprawki optymalizacji zapytań
  • Włącz lub wyłącz podsłuchiwanie parametrów
  • Włącz lub wyłącz pamięć podręczną tożsamości
  • Włącz lub wyłącz skompilowany kod pośredniczący planu, który ma być przechowywany w pamięci podręcznej, gdy partia jest kompilowana po raz pierwszy.
  • Włącz lub wyłącz zbieranie statystyk wykonania dla natywnie skompilowanych modułów T-SQL.
  • Włącz lub wyłącz domyślnie opcje online dla instrukcji DDL, które obsługują składnię ONLINE=ON/OFF.
  • Włącz lub wyłącz domyślne opcje wznawiania instrukcji DDL, które obsługują składnię RESUMABLE=ON/OFF.
  • Włącz lub wyłącz funkcję automatycznego upuszczania globalnych tabel tymczasowych

Jak widać na liście konfiguracji objętych zakresem, masz dużo kontroli i precyzji w dostrajaniu konkretnych zachowań dla poszczególnych baz danych. W przypadku niektórych klientów ograniczenia kontroli na poziomie instancji mogą mieć negatywny wpływ, podczas gdy inni będą postrzegać to jako korzyść.

Dla firm, które mają bazę danych na klienta, wymagającą pełnej izolacji, która jest wbudowana w Azure SQL Database. Dla tych, którzy potrzebują możliwości SQL Server na poziomie instancji, ale chcieliby skorzystać z oferty PaaS firmy Microsoft, istnieje usługa Azure SQL Managed Instance, która obejmuje zakres instancji. Celem jest osiągnięcie 100% zgodności powierzchni z SQL Server; można więc ustawić minimalną i maksymalną pamięć serwera, włączyć optymalizację pod kątem obciążeń adhoc i zmienić zarówno wartość MAXDOP, jak i próg kosztów dla równoległości. Tempdb w wystąpieniu zarządzanym ma już wiele plików, ale możesz dodać więcej i zwiększyć domyślny rozmiar. Pod wieloma względami naprawdę przypomina pełną instalację SQL Server.

Dostrajanie zapytań

Inną różnicą między Azure SQL Database i SQL Server jest to, że magazyn zapytań jest domyślnie włączony w Azure SQL Database. Możesz wyłączyć Query Store, ale następnie ograniczysz narzędzia Intelligent Performance w Azure Portal, które z niego korzystają. Magazyn zapytań to funkcja, która zapewnia wgląd w wydajność zapytań i wybór planu. Magazyn zapytań przechwytuje również historię zapytań, planów i statystyk środowiska wykonawczego, dzięki czemu można przeglądać, co się dzieje. Czy chcesz wiedzieć, które zapytanie ma najdłuższy czas rekompilacji, czas wykonania, liczbę wykonań, użycie procesora, użycie pamięci, najwięcej fizycznych odczytów/zapisów i nie tylko? Magazyn zapytań zawiera te informacje. W przypadku programu SQL Server należy włączyć tę funkcję dla każdej bazy danych. Jeśli jesteś nowy w Query Store, moja koleżanka Erin Stellato ma trzygodzinny kurs na temat Pluralsight, który pomoże Ci zacząć.

Kategoria narzędzi Intelligent Performance ma cztery funkcje. Po pierwsze, przegląd wydajności zawiera podsumowanie ogólnej wydajności bazy danych, wyświetlając listę 5 najczęstszych zapytań według wykorzystania procesora, wszelkie zalecenia z automatycznego dostrajania, działania dostrajania i bieżące ustawienia automatycznego dostrajania. Ta strona docelowa daje szybki wgląd w swoje wyniki.

Po drugie, opcja zaleceń dotyczących wydajności wyświetli listę wszelkich bieżących zaleceń dotyczących tworzenia indeksów lub czy jakieś indeksy powinny zostać usunięte. Jeśli jakiekolwiek ostatnie działania zostały zakończone, zobaczysz również historię.

Po trzecie, Query Performance Insight to miejsce, w którym można znaleźć głębszy wgląd w zużycie zasobów, wyświetlając 5 najczęstszych zapytań według procesora CPU, we/wy danych lub we/wy dziennika. Pięć najczęstszych zapytań jest oznaczonych kolorami, dzięki czemu można szybko zobaczyć wizualnie procent całkowitego zużycia. Możesz kliknąć identyfikator zapytania, aby uzyskać więcej szczegółów, w tym tekst SQL. Dostępna jest również zakładka długo działających zapytań. Bardzo podoba mi się, że Microsoft umieścił taką funkcję w Azure Portal bez żadnych kosztów. Zapewnia wartość, dając klientom portal, w którym mogą zobaczyć najczęściej zadawane pytania. To, co uważam za wyzwanie, to możliwość zobaczenia ogólnej linii bazowej dla porównania dnia z dniem, tygodnia z tygodnia i poprzedniego miesiąca. Jednak do szybkiej analizy i przeglądu przydatne jest narzędzie Query Performance Insight.

Ostatnią funkcją w tej kategorii jest automatyczne strojenie. Tutaj możesz skonfigurować plan wymuszenia, utworzyć indeks i usunąć ustawienia indeksu. Możesz go wymusić, wyłączyć lub wybrać dziedziczenie z serwera. Plan wymuszania umożliwia platformie Azure wybranie tego, co według nich byłoby lepsze z planów wykonania dla zapytań regresywnych. Ta funkcja istnieje również w SQL Server 2017 Enterprise Edition jako automatyczna korekta planu. Niektórzy administratorzy baz danych denerwują się, gdy słyszą o funkcjach automatycznego dostrajania, ponieważ obawiają się, że w przyszłości może to zastąpić potrzebę korzystania z administratorów baz danych. Zawsze lubię zadawać pytanie:„Ile czasu każdego dnia spędzasz proaktywnie dostrajając zapytania?”. Przytłaczającą odpowiedzią jest to, że ludzie mogą spędzać bardzo mało czasu na proaktywnym dostrajaniu, a większość odpowiada, że ​​naprawdę „dostrajają” tylko po wydaniu kodu lub gdy użytkownicy zaczynają narzekać.

Oprócz wbudowanych narzędzi i zalet korzystania z Query Store, DMV są również łatwo dostępne. Glenn Berry ma całą kolekcję skryptów tylko dla Azure SQL Database, z których możesz korzystać. Jednym konkretnym DMV, który chcę wywołać, jest sys.dm_os_wait_stats. Będzie to pobierane z poziomu serwera, więc jeśli naprawdę chcesz spojrzeć na statystyki oczekiwania na poziomie bazy danych, musisz zamiast tego użyć sys.dm_db_wait_stats.

Sprzęt – skalowanie

Innym obszarem do rozważenia przy sprawdzaniu wydajności z usługą Azure SQL Database jest sprzęt bazowy. Usługa Azure SQL Database jest wyceniana według jednostek transakcji bazy danych (DTU) i rdzeni wirtualnych. Jednostki DTU są mieszaną miarą procesora, pamięci i we/wy i są podzielone na trzy warstwy; Podstawowe, standardowe i premium. Basic to tylko 5 jednostek DTU, Standard obejmuje 10-3000 DTU, a Premium to 125-4000 DTU. W przypadku warstw opartych na rdzeniach wirtualnych mamy do czynienia z warstwami Ogólnego przeznaczenia i Krytyczne dla biznesu, od 1-80 rdzeni wirtualnych.

W modelu DTU, Basic powinien być brany pod uwagę przy opracowywaniu i testowaniu. Ma tylko 7 dni przechowywania kopii zapasowych, więc nie uważałbym tego za opłacalne dla jakichkolwiek danych produkcyjnych. Standard jest odpowiedni dla niskiego, średniego i wysokiego zapotrzebowania na procesor przy umiarkowanym lub niskim zapotrzebowaniu na wejścia/wyjścia. Warstwa Podstawowa i Standardowa oferuje 2,5 IOPS na jednostkę DTU z 5 ms (odczyt), 10 ms (zapis). Warstwa Premium jest przeznaczona dla średnich i wysokich wymagań dotyczących procesora i wysokich operacji we/wy, oferując 48 IOPS na jednostkę DTU z 2 ms (odczyt/zapis). Warstwa Premium ma magazyn o rzędy wielkości szybszy niż standard. W modelu vCore masz procesory Gen4 oferujące 7 GB pamięci RAM na rdzeń fizyczny i procesory Gen 5, które oferują 5,1 GB pamięci RAM na rdzeń logiczny. Z perspektywy we/wy General Purpose oferuje 500 IOPS na rdzeń wirtualny z maks. 7000. Business Critical oferuje 5000 IOPS na rdzeń z maks. 200 000.

Podsumowanie

Azure SQL Database doskonale nadaje się do systemów, które wymagają izolacji bazy danych, podczas gdy Azure SQL Managed Instance doskonale sprawdza się w środowiskach, w których wymagana jest zgodność na poziomie wystąpienia (obsługa zapytań między bazami danych). Gdy musisz dostroić Azure SQL Database, musisz wykonać pewne czynności na poziomie bazy danych, ponieważ opcje na poziomie wystąpienia są niedostępne, więc ustawienia konfiguracji w zakresie bazy danych są opcjami dostrajania. W rozwiązywaniu problemów z zapytaniami o niskiej wydajności masz wbudowane narzędzia, które pomagają, w tym Query Store, i większość zwykłych skryptów dostrajających będzie działać. Może się okazać, że nadal potrzebujesz więcej, takich jak plany bazowe, więcej danych historycznych i możliwość tworzenia warunków doradczych, które pomogą Ci zarządzać obciążeniami. W tym miejscu mogą pomóc potężne rozwiązania monitorujące, takie jak SentryOne DB Sentry.

Gdy wszystko inne zawiedzie lub obciążenie po prostu wzrosło ponad obecne zasoby sprzętowe, przeskaluj do wyższego poziomu.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Instrukcja SQL WHERE

  2. ETL kontra ELT:zakładamy, ty sędzio

  3. Jak zainstalować ArangoDB na Ubuntu 20.04

  4. Jak skopiować dane z jednej tabeli do drugiej w SQL?

  5. Jak znaleźć średnią kolumny numerycznej w SQL?