Udostępnij za pośrednictwem


Monitorowanie magazynu OLTP w pamięci w usłudze Azure SQL Managed Instance

Dotyczy: Azure SQL Managed Instance

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.

Określanie, czy dane mieszczą się w ramach limitu magazynu OLTP w pamięci

Warstwa usługi Krytyczne dla działania firmy zawiera pewną ilość maksymalnej pamięci OLTP w pamięci określonej przez liczbę rdzeni wirtualnych.

Szacowanie wymagań dotyczących pamięci dla tabeli zoptymalizowanej pod kątem pamięci działa tak samo w przypadku programu SQL Server, jak w usłudze Azure SQL Managed Instance. Przejrzyj kilka minut, aby zapoznać się z artykułem Szacowanie wymagań dotyczących pamięci.

Wiersze zmiennych tabeli i tabeli, a także indeksy, są liczone do maksymalnego rozmiaru danych użytkownika. Ponadto potrzebuje wystarczającej ilości miejsca, ALTER TABLE aby utworzyć nową wersję całej tabeli i jej indeksów.

Po przekroczeniu tego limitu operacje wstawiania i aktualizacji mogą zakończyć się niepowodzeniem z powodu błędu 41823.

Poprawianie sytuacji magazynowania OLTP poza pamięcią — błąd 41823

Spełnienie limitu magazynu OLTP w pamięci w bazie danych powoduje niepowodzenie operacji INSERT, UPDATE, ALTER i CREATE z powodu błędu 41823. Ten błąd może spowodować przerwanie aktywnej transakcji.

Błąd 41823 wskazuje, że tabele i zmienne tabeli zoptymalizowane pod kątem pamięci w wystąpieniu osiągnęły maksymalny rozmiar magazynu OLTP w pamięci.

Aby rozwiązać ten błąd, 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 liczbę rdzeni wirtualnych, dodając magazyn w pamięci dla danych, które należy przechowywać w tabelach zoptymalizowanych pod kątem pamięci.

Uwaga

W rzadkich przypadkach błąd 41823 może być przejściowy, co oznacza, że jest wystarczająca ilość dostępnego magazynu OLTP w pamięci i ponowienie próby wykonania operacji powiedzie się. 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. 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

  • Okresowo monitorując zużycie pamięci, można określić, jak rośnie zużycie pamięci i ile miejsca na głowie pozostało w limitach zasobów. Zidentyfikuj ilość pamięci zużywanej przez obiekty w bazie danych lub wystąpieniu. Na przykład dynamiczne widoki zarządzania 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_statszapytanie:

      SELECT object_name(object_id) AS [Name], *  
         FROM sys.dm_db_xtp_table_memory_stats;
      
    • Pamięć przydzielona do aparatu OLTP w pamięci, a obiekty zoptymalizowane pod kątem pamięci są zarządzane w taki sam sposób, jak każdy inny odbiorca pamięci w bazie danych. Urzędy pamięci typu MEMORYCLERK_XTP odpowiadają za całą pamięć przydzieloną do aparatu OLTP w pamięci. Użyj następującego zapytania, sys.dm_os_memory_clerks 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 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 Managed Instance z dynamicznym widokiem 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;
    

    Aby uzyskać więcej informacji, zobacz Monitorowanie i rozwiązywanie problemów z użyciem pamięci OLTP w pamięci.