Optymalizowanie magazynu bazy danych

Ukończone

Aby zoptymalizować magazyn bazy danych, należy rozważyć proporcjonalne wypełnienie i konfigurację bazy danych tempdb.

Zrozumienie wydajności operacji we/wy

Wydajność operacji wejścia/wyjścia może być kluczowa dla aplikacji bazy danych. Usługa Azure SQL pozwala abstrahować od fizycznego rozmieszczenia plików, ale istnieją metody zapewniania potrzebnej wydajności operacji We/Wy.

Liczba operacji We/Wy na sekundę może być istotna dla Twojej aplikacji. Upewnij się, że wybrano odpowiednią warstwę usługi i vCores dla potrzeb IOPS. Dowiedz się, jak mierzyć IOPS (liczbę operacji we/wy na sekundę) dla zapytań lokalnych podczas migracji na platformę Azure. Jeśli masz ograniczenia dotyczące liczby operacji We/Wy na sekundę, mogą wystąpić przypadki długiego oczekiwania na takie operacje. W modelu zakupów vCore możesz zwiększyć liczbę rdzeni wirtualnych lub przejść do Business Critical albo Hyperscale, jeśli nie masz wystarczającej liczby IOPS. Dla obciążeń produkcyjnych, korzystając z DTU, zalecamy przejście na warstwę Premium.

Opóźnienie operacji wejścia/wyjścia to kolejny kluczowy składnik wydajności tych operacji. W celu uzyskania mniejszych opóźnień we/wy dla usługi Azure SQL Database, rozważ użycie warstwy Business Critical lub Hiperskala. Aby uzyskać mniejsze opóźnienia We/Wy dla usługi SQL Managed Instance, przejdź do warstwy Biznes Krytyczne albo zwiększ rozmiar lub liczbę plików bazy danych. Zmniejszenie opóźnienia dziennika transakcji może wymagać użycia transakcji wielozdaniowych.

Pliki i grupy plików

Specjaliści ds. programu SQL Server często używają plików i grup plików, aby zwiększyć wydajność operacji we/wy przez fizyczne umieszczanie plików. Usługa Azure SQL nie umożliwia użytkownikom umieszczania plików w określonych systemach dysków. Jednak usługa Azure SQL ma zobowiązania dotyczące zasobów dotyczące wydajności operacji we/wy w odniesieniu do szybkości, liczby operacji we/wy na sekundę i opóźnień. W ten sposób abstrahowanie użytkownika od fizycznego umieszczania plików może stanowić korzyść.

Usługa Azure SQL Database ma tylko jeden plik bazy danych (Hyperscale zwykle ma ich kilka), a maksymalny rozmiar jest konfigurowany za pomocą interfejsów Azure. Nie ma funkcji tworzenia większej liczby plików.

Usługa Azure SQL Managed Instance obsługuje dodawanie plików bazy danych i konfigurowanie rozmiarów, ale nie fizyczne umieszczanie plików. Aby zwiększyć wydajność operacji we/wy, możesz użyć liczby plików i rozmiarów plików dla usługi SQL Managed Instance. Ponadto grupy plików zdefiniowane przez użytkownika są obsługiwane w przypadku usługi SQL Managed Instance na potrzeby zarządzania.

Opisać wypełnienie proporcjonalne

Podczas wstawiania 1 gigabajta danych do bazy danych programu SQL Server z dwoma plikami danych można oczekiwać, że każdy plik wzrośnie o około 512 megabajtów. Jednak nie zawsze tak jest. Program SQL Server dystrybuuje dane na podstawie rozmiaru każdego pliku. Na przykład jeśli oba pliki danych mają 2 gigabajty, dane będą równomiernie dystrybuowane. Ale jeśli jeden plik ma 10 gigabajtów, a drugi to 1 gigabajt, około 900 MB przejdzie do większego pliku i 100 MB na mniejszy. To zachowanie jest powszechne w każdej bazie danych, ale w tempdb, która intensywnie operuje zapisami, nierówność wzorca zapisu może prowadzić do wąskiego gardła w największym pliku, ponieważ obsługuje on więcej zapisów.

Konfigurowanie bazy danych Tempdb w programie SQL Server

Program SQL Server wykrywa liczbę dostępnych procesorów CPU podczas instalacji i konfiguruje odpowiednią liczbę plików, maksymalnie osiem, z równomiernymi rozmiarami. Ponadto zachowania flag śledzenia 1117 i 1118 są zintegrowane z silnikiem baz danych, ale tylko dla tempdb. W przypadku obciążeń intensywnie wykorzystujących tempdb warto zwiększyć liczbę plików bazy danych tempdb powyżej ośmiu, odpowiadającej liczbie procesorów na maszynie.

tempdb Używasz w ten sam sposób zarówno dla programu SQL Server, jak i usługi Azure SQL. Należy jednak pamiętać, że możliwość konfigurowania tempdb jest inna, w tym umieszczanie plików, liczba i rozmiar plików oraz tempdb opcje konfiguracji.

Program SQL Server używa bazy danych tempdb do wykonywania różnych zadań poza przechowywaniem tabel tymczasowych zdefiniowanych przez użytkownika. Jest ona używana w tabelach roboczych, które przechowują pośrednie wyniki zapytań, operacje sortowania i magazyn wersji na potrzeby przechowywania wersji wierszy, między innymi. Ze względu na to duże wykorzystanie kluczowe jest umieszczenie bazy danych tempdb w magazynie o najniższym opóźnieniu i prawidłowe skonfigurowanie plików danych.

Pliki tempdb bazy danych są zawsze automatycznie przechowywane na lokalnych dyskach SSD, więc wydajność we/wy nie powinna być problemem.

Specjaliści ds. programu SQL Server często używają więcej niż jednego pliku bazy danych do partycjonowania alokacji tabel tempdb . W przypadku usługi Azure SQL Database liczba plików jest skalowana przy użyciu liczby rdzeni wirtualnych (na przykład dwóch rdzeni wirtualnych równa się czterem plikom) z maksymalnie 16. Liczba plików nie jest konfigurowalna przez T-SQL dla tempdb, jednak można ją zmienić, dostosowując opcję wdrożenia. Maksymalny rozmiar tempdb jest skalowany na liczbę rdzeni wirtualnych. Otrzymujesz 12 plików wraz z usługą SQL Managed Instance, niezależnie od rdzeni wirtualnych.

Opcja MIXED_PAGE_ALLOCATION bazy danych jest ustawiona na WYŁĄCZONE i AUTOGROW_ALL_FILES jest ustawiona na WŁĄCZONE. Nie można tego skonfigurować, ale tak jak w przypadku programu SQL Server, są to zalecane wartości domyślne.

tempdb Funkcja optymalizacji metadanych wprowadzona w programie SQL Server 2019, która może złagodzić konflikty zatrzasków, nie jest obecnie dostępna w bazie danych Azure SQL ani w usłudze Azure SQL Managed Instance.

Konfiguracja bazy danych

Zwykle konfigurujesz bazę danych za pomocą instrukcji T-SQL ALTER DATABASE i ALTER DATABASE SCOPED CONFIGURATION. Na potrzeby usługi Azure SQL jest dostępnych wiele opcji konfiguracji dotyczących wydajności. Zapoznaj się z dokumentacją referencyjną języka T-SQL dotyczącą ALTER DATABASE i ALTER DATABASE SCOPED CONFIGURATION w celu zrozumienia różnic pomiędzy programem SQL Server, usługą Azure SQL Database i usługą Azure SQL Managed Instance.

W usłudze Azure SQL Database domyślny model odzyskiwania to pełne odzyskiwanie, co gwarantuje, że baza danych może spełniać umowy dotyczące poziomu usług (SLA) platformy Azure. Oznacza to, że minimalne rejestrowanie dla operacji zbiorczych nie jest obsługiwane, z wyjątkiem tempdb, gdzie minimalne rejestrowanie jest dozwolone.

Konfiguracja MAXDOP

Maksymalny stopień równoległości (MAXDOP) może mieć wpływ na wydajność poszczególnych zapytań. Programy SQL Server i Azure SQL obsługują MAXDOP w ten sam sposób. Gdy MAXDOP jest ustawiona na wyższą wartość, więcej równoległych wątków jest używanych na zapytanie, co potencjalnie przyspiesza wykonywanie zapytań. Jednak zwiększenie równoległości wymaga dodatkowych zasobów pamięci, co może prowadzić do presji pamięciowej i wpływać na wydajność pamięci masowej. Na przykład podczas kompresowania grup wierszy do magazynu kolumn, równoległość wymaga większej ilości pamięci, co może spowodować nacisk na pamięć i przycinanie grup wierszy.

Z drugiej strony, ustawienie parametru MAXDOP na niższą wartość może zmniejszyć obciążenie pamięci, dzięki czemu system przechowywania będzie wydajniejszy. Jest to ważne w środowiskach z ograniczonymi zasobami pamięci lub wysokim zapotrzebowaniem na magazyn. Starannie konfigurując program MAXDOP, można równoważyć wydajność zapytań i wydajność magazynowania, zapewniając optymalne wykorzystanie zasobów procesora CPU i magazynu.

Opcję MAXDOP można skonfigurować w usłudze Azure SQL podobnie jak w programie SQL Server przy użyciu następujących technik:

  • ALTER DATABASE SCOPED CONFIGURATION konfigurowanie MAXDOP jest obsługiwane w usłudze Azure SQL.
  • Procedura sp_configure składowana dla "maksymalnego stopnia równoległości" jest obsługiwana w przypadku usługi SQL Managed Instance.
  • MAXDOP Wskazówki dotyczące zapytań są w pełni obsługiwane.
  • Konfigurowanie MAXDOP za pomocą zarządcy zasobów jest obsługiwane w przypadku usługi SQL Managed Instance.