Monitorowanie magazynu OLTP w pamięci w usłudze Azure SQL Database
Dotyczy: Azure SQL Database
W przypadku olTP w pamięci dane w tabelach zoptymalizowanych pod kątem pamięci i zmiennych tabeli znajdują się w magazynie OLTP w pamięci, który jest częścią pamięci bazy danych odkładaną na dane w pamięci.
- Bazy danych i elastyczne pule w warstwach usługi Premium (DTU) i Krytyczne dla działania firmy (rdzenie wirtualne) obsługują olTP w pamięci.
- Warstwa usługi Hiperskala obsługuje podzestaw obiektów OLTP w pamięci, ale nie zawiera tabel zoptymalizowanych pod kątem pamięci. Aby uzyskać więcej informacji, zobacz Ograniczenia hiperskala.
Określanie, czy dane mieszczą się w ramach limitu magazynu OLTP w pamięci
Określ limity magazynowania różnych celów usługi. Każdy cel usługi Premium i Krytyczne dla działania firmy ma maksymalny rozmiar magazynu OLTP w pamięci.
- Limity zasobów oparte na jednostkach DTU — pojedyncza baza danych
- Limity zasobów oparte na jednostkach DTU — pule elastyczne
- Limity zasobów opartych na rdzeniach wirtualnych — pojedyncze bazy danych
- Limity zasobów opartych na rdzeniach wirtualnych — pule elastyczne
Szacowanie wymagań dotyczących pamięci dla tabeli zoptymalizowanej pod kątem pamięci działa tak samo jak w przypadku programu SQL Server w usłudze Azure SQL Database. Zapoznaj się z artykułem Szacowanie wymagań dotyczących pamięci.
Wiersze zmiennych tabeli i tabeli, a także indeksy, są liczone do limitu. Ponadto instrukcje wymagają wystarczającej ilości pamięci, ALTER TABLE
aby utworzyć nową wersję całej tabeli i jej indeksów.
Po osiągnięciu limitu operacje wstawiania i aktualizacji mogą zakończyć się niepowodzeniem. W tym momencie musisz usunąć dane, aby odzyskać pamięć, lub skalować w górę cel usługi bazy danych lub elastycznej puli. Aby uzyskać więcej informacji, zobacz Poprawianie sytuacji magazynu OLTP poza pamięcią — błędy 41823 i 41840.
Monitorowanie i alerty
Magazyn OLTP w pamięci można monitorować jako wartość procentową limitu magazynu dla celu usługi w witrynie Azure Portal:
- Na stronie Przegląd bazy danych SQL wybierz wykres na stronie Monitorowanie. Ewentualnie w menu nawigacji znajdź pozycję Monitorowanie i wybierz pozycję Metryki.
- Wybierz pozycję Dodaj metrykę.
- W obszarze Podstawowa wybierz metryka Procent magazynowania OLTP w pamięci.
- Aby dodać alert, wybierz pole Wykorzystanie zasobów, aby otworzyć stronę Metryka , a następnie wybierz pozycję Nowa reguła alertu. Postępuj zgodnie z instrukcjami, aby utworzyć regułę alertu dotyczącego metryk.
Możesz też użyć następującego zapytania, aby wyświetlić wykorzystanie magazynu w pamięci:
SELECT xtp_storage_percent
FROM sys.dm_db_resource_stats
ORDER BY end_time DESC;
Rozwiązywanie problemów z błędami braku pamięci w pamięci OLTP
Osiągnięcie limitu magazynu OLTP w pamięci w bazie danych lub elastycznej puli może spowodować INSERT
niepowodzenie instrukcji , ALTER
UPDATE
i CREATE
z powodu błędu 41823 (dla pojedynczych baz danych) lub błędu 41840 (w przypadku pul elastycznych). Oba błędy powodują przerwanie aktywnej transakcji.
Błędy 41823 i 41840 wskazują, że rozmiar tabel i zmiennych tabeli zoptymalizowanych pod kątem pamięci w bazie danych lub elastycznej puli osiągnął maksymalny rozmiar magazynu OLTP w pamięci.
Aby rozwiązać te błędy, wykonaj następujące czynności:
- Usuń dane z tabel zoptymalizowanych pod kątem pamięci, potencjalnie odciążając dane do tradycyjnych tabel opartych na dyskach; lub
- Uaktualnij cel usługi do jednego z wystarczającą ilością magazynu OLTP w pamięci dla danych, które należy zachować w tabelach i zmiennych tabeli zoptymalizowanych pod kątem pamięci.
Uwaga
W rzadkich przypadkach błędy 41823 i 41840 mogą być przejściowe, co oznacza, że istnieje wystarczająca ilość dostępnego magazynu OLTP w pamięci i ponowienie próby wykonania operacji zakończy się pomyślnie. Dlatego zalecamy zarówno monitorowanie ogólnego dostępnego magazynu OLTP w pamięci, jak i ponowienie próby podczas pierwszego wystąpienia błędu 41823 lub 41840. Aby uzyskać więcej informacji na temat logiki ponawiania prób, zobacz Wykrywanie konfliktów i logika ponawiania za pomocą olTP w pamięci.
Monitorowanie za pomocą dynamicznych widoków zarządzania
Dzięki proaktywnym monitorowaniu zużycia pamięci można określić, jak rośnie zużycie pamięci i ile miejsca pracy pozostało do limitów zasobów. Zidentyfikuj ilość pamięci zużywanej przez obiekty w bazie danych lub wystąpieniu. Można użyć widoków DMV sys.dm_db_xtp_table_memory_stats lub sys.dm_os_memory_clerks .
Użycie pamięci dla wszystkich tabel, indeksów i obiektów systemowych użytkownika można znaleźć, wykonując
sys.dm_db_xtp_table_memory_stats
zapytanie:SELECT object_name(object_id) AS [Name], * FROM sys.dm_db_xtp_table_memory_stats;
Pamięć przydzielona do aparatu OLTP w pamięci i obiekty zoptymalizowane pod kątem pamięci są zarządzane tak samo jak w przypadku innych odbiorców pamięci w bazie danych. pamięci typu
MEMORYCLERK_XTP
uwzględniają całą pamięć przydzieloną do aparatu OLTP w pamięci. Użyj następującego zapytania, aby znaleźć całą pamięć używaną przez aparat OLTP w pamięci, w tym pamięć dedykowaną określonym bazom danych.-- This DMV accounts for all memory used by the In-Memory OLTP engine SELECT [type], [name] , memory_node_id , pages_kb/1024. AS pages_MB FROM sys.dm_os_memory_clerks WHERE [type] LIKE '%xtp%';
type name memory_node_id pages_MB -------------------- ---------- -------------- -------------------- MEMORYCLERK_XTP Default 0 18 MEMORYCLERK_XTP DB_ID_5 0 1358 MEMORYCLERK_XTP Default 64 0
Możesz również uzyskać więcej informacji na temat błędów braku pamięci w usłudze Azure SQL Database przy użyciu dynamicznego widoku zarządzania sys.dm_os_out_of_memory_events. Na przykład:
SELECT * FROM sys.dm_os_out_of_memory_events ORDER BY event_time DESC;