Optymalizowanie wydajności przy użyciu technologii w pamięci w usłudze Azure SQL Managed Instance
Dotyczy:Azure SQL Managed Instance
Technologie przetwarzania w pamięci umożliwiają zwiększenie wydajności aplikacji i potencjalnie zmniejszenie kosztów zarządzanego wystąpienia SQL. Funkcja In-Memory OLTP jest dostępna w warstwie usługi Biznes Krytyczny usługi Azure SQL Managed Instance.
Kiedy należy używać technologii w pamięci
Korzystając z technologii w pamięci, można osiągnąć ulepszenia wydajności przy użyciu różnych obciążeń:
- Transakcyjne (przetwarzanie transakcyjne online (OLTP)), w którym większość żądań odczytuje lub aktualizuje mniejszy zestaw danych, na przykład operacje tworzenia/odczytu/aktualizacji/usuwania (CRUD).
- Analityczne (przetwarzanie analityczne online (OLAP)), w których większość zapytań ma złożone obliczenia na potrzeby raportowania, a także regularnie zaplanowane procesy, które wykonują operacje ładowania (lub ładowania zbiorczego) i/lub zapisują zmiany danych w istniejących tabelach. Często obciążenia OLAP są okresowo aktualizowane z obciążeń OLTP.
- Mieszane (hybrydowe przetwarzanie transakcji/analizy (HTAP)), w których zapytania OLTP i OLAP są wykonywane na tym samym zestawie danych.
Technologie w pamięci mogą zwiększyć wydajność tych obciążeń, zachowując dane, które powinny być przetwarzane w pamięci, przy użyciu natywnej kompilacji zapytań lub zaawansowanego przetwarzania, takiego jak przetwarzanie wsadowe i instrukcje SIMD dostępne na podstawowym sprzęcie.
Omówienie
Usługa Azure SQL Managed Instance obsługuje następujące technologie w pamięci:
- Funkcja OLTP w pamięci zwiększa liczbę transakcji na sekundę i zmniejsza opóźnienie przetwarzania transakcji. Scenariusze, które korzystają z przetwarzania OLTP w pamięci, to: przetwarzanie transakcji o wysokiej przepływności, takie jak handel i gry, pozyskiwanie danych ze zdarzeń lub urządzeń IoT, buforowanie, ładowanie danych oraz scenariusze zmiennych tabeli i tabeli tymczasowej.
- Klastrowane indeksy magazynujące kolumny zmniejszają rozmiar magazynu (do 10 razy) i zwiększają wydajność zapytań dotyczących raportowania i analizy. Można jej używać z tabelami faktów w składnicach danych, aby dopasować więcej danych do bazy danych i zwiększyć wydajność. Ponadto można używać ich z danymi historycznymi w operacyjnej bazie danych do archiwizowania i wykonywania zapytań o maksymalnie 10 razy więcej danych.
- Nieklastrowane indeksy magazynu kolumn dla protokołu HTAP ułatwiają uzyskiwanie wglądu w działalność biznesową w czasie rzeczywistym za pomocą bezpośredniego wykonywania zapytań względem operacyjnej bazy danych bez konieczności uruchamiania kosztownego procesu wyodrębniania, przekształcania i ładowania (ETL) i oczekiwania na wypełnienie magazynu danych. Nieklastrowane indeksy magazynu kolumn umożliwiają szybkie wykonywanie zapytań analitycznych w bazie danych OLTP przy jednoczesnym zmniejszeniu wpływu na obciążenie operacyjne.
- Zoptymalizowane pod kątem pamięci klastrowane indeksy magazynu kolumn dla protokołu HTAP umożliwiają szybkie przetwarzanie transakcji i jednoczesne uruchamianie zapytań analitycznych bardzo szybko na tych samych danych.
Indeksy magazynowe kolumn i OLTP w pamięci zostały wprowadzone w SQL Server w latach 2012 i 2014, odpowiednio. Usługi Azure SQL Database, Azure SQL Managed Instance i SQL Server dzielą tę samą implementację technologii w pamięci operacyjnej.
Uwaga
Aby zapoznać się z krok po kroku szczegółowym samouczkiem, który demonstruje zalety wydajności technologii OLTP w trybie pamięciowym, korzystając z AdventureWorksLT
przykładowej bazy danych i ostress.exe, odwiedź Przykład w pamięci w usłudze Azure SQL Managed Instance.
Zalety technologii w pamięci
Ze względu na bardziej wydajne przetwarzanie zapytań i transakcji technologie w pamięci pomagają również zmniejszyć koszty. Po przejściu do warstwy usług Krytyczna dla biznesu w Azure SQL Managed Instance, zwykle nie trzeba uaktualniać wystąpienia zarządzanego SQL, aby osiągnąć wzrost wydajności. W niektórych przypadkach można nawet zmniejszyć warstwę cenową, jednocześnie zauważając poprawę wydajności za pomocą technologii w pamięci.
W tym artykule opisano aspekty indeksów OLTP w pamięci i magazynu kolumn, które są specyficzne dla usługi Azure SQL Managed Instance, a także przykłady:
- Zobaczysz wpływ tych technologii na limity magazynowania i rozmiaru danych.
- Zobaczysz, jak zarządzać przenoszeniem baz danych korzystających z tych technologii między różnymi warstwami cenowymi.
- Zobaczysz dwa przykłady ilustrujące użycie OLTP w pamięci operacyjnej oraz indeksy magazynowe kolumn.
Aby uzyskać więcej informacji na temat OLTP w pamięci w SQL Server, zobacz:
- Omówienie OLTP w pamięci i scenariusze użycia (zawiera odwołania do analizy przypadków klientów i informacje na temat rozpoczęcia pracy)
- Dokumentacja dotycząca olTP w pamięci
- Przewodnik po indeksach kolumnowych
- Hybrydowe przetwarzanie transakcyjne/analityczne (HTAP), nazywane również analizą operacyjną w czasie rzeczywistym
OLTP w pamięci
Technologia OLTP w pamięci zapewnia niezwykle szybkie operacje dostępu do danych dzięki przechowywaniu wszystkich danych w pamięci. Używa również wyspecjalizowanych indeksów, natywnej kompilacji zapytań i dostępu do danych bez zatrzaśnięć w celu zwiększenia wydajności obciążenia OLTP. Istnieją dwa sposoby organizowania danych OLTP w pamięci:
Magazyn wierszy zoptymalizowany pod kątem pamięci, gdzie każdy wiersz jest oddzielnym obiektem pamięci. Jest to klasyczny format OLTP w pamięci zoptymalizowany pod kątem obciążeń OLTP o wysokiej wydajności. Istnieją dwa typy tabel zoptymalizowanych pod kątem pamięci, które mogą być używane w formacie magazynu wierszy zoptymalizowanym pod kątem pamięci:
- Trwałe tabele (SCHEMA_AND_DATA), w których wiersze umieszczone w pamięci są zachowywane po ponownym uruchomieniu serwera. Ten rodzaj tabel zachowuje się jak tradycyjna tabela przechowywania wierszy z dodatkową korzyścią optymalizacji w pamięci.
- Tabele tymczasowe (SCHEMA_ONLY), w których wiersze nie są zachowywane po ponownym uruchomieniu. Ten typ tabeli jest przeznaczony dla danych tymczasowych (na przykład zamiany tabel tymczasowych) lub tabel, w których należy szybko załadować dane przed przeniesieniem ich do utrwalonej tabeli (tzw. tabel przejściowych).
Kolumnowy format zoptymalizowany pod kątem pamięci, w którym dane są zorganizowane w formie kolumnowej. Ta struktura jest przeznaczona dla scenariuszy HTAP, w których należy uruchamiać zapytania analityczne w tej samej strukturze danych, w której działa obciążenie OLTP.
Uwaga
Technologia OLTP w pamięci jest przeznaczona dla struktur danych, które mogą w pełni znajdować się w pamięci. Ponieważ danych w pamięci nie można zapisać na dysku, upewnij się, że używasz zarządzanego wystąpienia SQL, które ma wystarczającą ilość pamięci. Aby uzyskać więcej informacji, zobacz Rozmiar danych i ograniczenie magazynowania dla OLTP w pamięci.
- Szybkie wprowadzenie do przetwarzania OLTP w pamięci: Szybki start 1: Technologie OLTP w pamięci dla szybszej wydajności języka T-SQL.
Rozmiar danych i limit przechowywania dla OLTP w pamięci
Funkcja OLTP w pamięci zawiera tabele zoptymalizowane pod kątem pamięci, które są używane do przechowywania danych użytkownika. Te tabele muszą się zmieścić w pamięci. Ten pomysł jest określany jako przechowywanie OLTP w pamięci operacyjnej.
Warstwa usługi Krytyczne dla działania firmy zawiera pewną ilość maksymalnej pamięci OLTP w pamięci określonej przez liczbę rdzeni wirtualnych.
Następujące elementy są liczone do limitu magazynu OLTP w pamięci:
- Aktywne wiersze danych użytkownika w tabelach zoptymalizowanych pod kątem pamięci i zmiennych tabeli. Stare wersje wierszy nie są liczone w kierunku limitu.
- Indeksy w tabelach zoptymalizowanych pod kątem pamięci.
- Obciążenie operacyjne operacji ALTER TABLE.
W przypadku przekroczenia limitu zostanie wyświetlony błąd przekroczenia limitu przydziału i nie możesz już wstawiać ani aktualizować danych. Aby wyeliminować ten błąd, usuń dane lub zwiększ warstwę cenową bazy danych lub puli.
Aby uzyskać szczegółowe informacje na temat monitorowania użycia magazynu OLTP w pamięci i konfigurowania alertów po osiągnięciu limitu, zobacz Monitorowanie magazynu w pamięci.
Zmienianie konfiguracji sprzętu lub liczby rdzeni wirtualnych
Obniżenie konfiguracji sprzętu lub liczby rdzeni wirtualnych może negatywnie wpłynąć na instancję zarządzaną SQL.
Dane w tabelach zoptymalizowanych pod kątem pamięci muszą mieścić się w limicie pamięci magazynowej OLTP w pamięci dla konfiguracji sprzętowej i liczby rdzeni wirtualnych (vCore). Jeśli spróbujesz przeskalować w dół do ustawienia, które nie ma wystarczającej ilości dostępnego magazynu OLTP w pamięci, operacja zakończy się niepowodzeniem.
Określanie, czy istnieją obiekty w pamięci
Istnieje programowy sposób ustalenia, czy dana baza danych w zarządzanej instancji SQL obsługuje In-Memory OLTP. Możesz wykonać następujące zapytanie Języka Transact-SQL:
SELECT DatabasePropertyEx(DB_NAME(), 'IsXTPSupported');
Jeśli zapytanie zwróci wartość 1
, w tej bazie danych jest obsługiwana technologia OLTP w pamięci.
Następujące zapytania identyfikują wszystkie obiekty przy użyciu technologii w pamięci:
SELECT * FROM sys.tables WHERE is_memory_optimized=1
SELECT * FROM sys.table_types WHERE is_memory_optimized=1
SELECT * FROM sys.sql_modules WHERE uses_native_compilation=1
Magazyn kolumn w pamięci
Technologia magazynu kolumn w pamięci umożliwia przechowywanie i wykonywanie zapytań dotyczących dużej ilości danych w tabelach. Kolumnowe magazynowanie używa formatu przechowywania danych opartego na kolumnach i przetwarzania wsadowego zapytań, aby osiągnąć wydajność zapytań aż do 10 razy większą w obciążeniach OLAP w porównaniu do tradycyjnego, wierszowego magazynowania. Można również osiągnąć nawet 10-krotnie większą kompresję danych w porównaniu z rozmiarem danych nieskompresowanych.
Istnieją dwa typy modeli magazynu kolumn, których można użyć do organizowania danych:
- Klastrowany magazyn kolumnowy, w którym wszystkie dane w tabeli są zorganizowane w formacie kolumnowym. W tym modelu wszystkie wiersze w tabeli są umieszczane w formacie kolumnowym, który bardzo kompresuje dane i umożliwia wykonywanie szybkich zapytań analitycznych i raportów w tabeli. W zależności od charakteru danych rozmiar danych może być zmniejszony o 10x-100x. Model klastrowanego magazynu kolumn umożliwia również szybkie pozyskiwanie dużych ilości danych (zbiorcze ładowanie), ponieważ duże partie danych większe niż 100 000 wierszy są kompresowane przed ich zapisaniem na dysku. Ten model jest dobrym wyborem dla klasycznych scenariuszy magazynu danych.
- Nieklasteryzowany magazyn kolumnowy, w którym dane są przechowywane w tradycyjnej tabeli magazynu wierszowego i w którym znajduje się indeks w formacie magazynu kolumnowego, używany do zapytań analitycznych. Ten model umożliwia hybrydowe przetwarzanie transakcyjne i analityczne (HTAP): możliwość uruchamiania wydajnej analizy w czasie rzeczywistym na obciążeniu transakcyjnym. Zapytania OLTP są wykonywane w tabeli rowstore, która jest zoptymalizowana pod kątem uzyskiwania dostępu do małego zestawu wierszy, podczas gdy zapytania OLAP są wykonywane w indeksie magazynu kolumn, który jest lepszym wyborem do skanowania i analizy. Optymalizator zapytań dynamicznie wybiera format magazynu wierszy lub magazynu kolumn na podstawie zapytania. Indeksy nieklastrowanego magazynu kolumn nie zmniejszają rozmiaru danych, ponieważ oryginalny zestaw danych jest przechowywany w oryginalnej tabeli magazynu wierszy bez żadnych zmian. Jednak rozmiar dodatkowego indeksu kolumnowego powinien być znacząco mniejszy niż równoważny indeks drzewa B.
Uwaga
Technologia magazynu kolumn w pamięci przechowuje tylko dane potrzebne do przetworzenia w pamięci, podczas gdy dane, które nie mieszczą się w pamięci, są przechowywane na dysku. W związku z tym ilość danych w strukturach magazynu kolumn w pamięci może przekraczać ilość dostępnej pamięci.
Rozmiar danych i przechowywanie indeksów kolumnowych
Indeksy kolumnowe nie muszą mieścić się w pamięci. W związku z tym jedynym limitem rozmiaru indeksów jest maksymalny całkowity rozmiar bazy danych. Aby uzyskać więcej informacji, zobacz Limity zasobów usługi Azure SQL Managed Instance. Usługa Azure SQL Managed Instance obsługuje indeksy magazynu kolumn we wszystkich warstwach.
W przypadku korzystania z klastrowanych indeksów magazynu kolumn kompresja kolumn jest używana dla podstawowego magazynu tabel. Ta kompresja może znacznie zmniejszyć ilość miejsca w magazynie danych użytkownika, co oznacza, że można zmieścić więcej danych w bazie danych. Kompresję można dodatkowo zwiększyć za pomocą kompresji archiwalnej kolumnowej. Ilość kompresji, którą można osiągnąć, zależy od charakteru danych, ale 10 razy kompresja nie jest rzadkością.
W bazie danych o maksymalnym rozmiarze 1 terabajta (TB), dzięki zastosowaniu indeksów kolumnowych uzyskując dziesięciokrotną kompresję, możesz zmieścić łącznie 10 TB danych użytkownika.
Korzystając z nieklastrowanych indeksów columnstore, tabela podstawowa jest nadal przechowywana w tradycyjnym formacie rowstore. W związku z tym oszczędności w przechowywaniu danych nie są tak znaczące, jak w przypadku klastrowanych indeksów kolumnowych. Jeśli jednak zastępujesz wiele tradycyjnych indeksów nieklastrowanych pojedynczym indeksem kolumnowym, nadal możesz zauważyć ogólne oszczędności w zapotrzebowaniu na przestrzeń dyskową dla tabeli.
Powiązana zawartość
- Przykład w pamięci w usłudze Azure SQL Managed Instance
- Szybki start 1: technologie OLTP w pamięci, aby uzyskać szybszą wydajność języka T-SQL
- Użyj OLTP w pamięci w istniejącej aplikacji Azure SQL
- Omówienie i scenariusze użycia OLTP w pamięci
- Monitorowanie magazynu OLTP w pamięci
- Dowiedz się więcej o olTP w pamięci
- Dowiedz się więcej o indeksach columnstore
- Dowiedz się więcej o analizie operacyjnej w czasie rzeczywistym
- Artykuł techniczny: OlTP w pamięci — typowe wzorce obciążeń i zagadnienia dotyczące migracji w programie SQL Server 2014