Monitorování úložiště OLTP v paměti ve službě Azure SQL Database

Platí pro:Azure SQL Database

V případě OLTP v paměti se data v tabulkách a proměnných tabulek optimalizovaných pro paměť nacházejí v úložišti OLTP v paměti.

Určení, jestli se data vejdou do limitu úložiště OLTP v paměti

Určete limit úložiště různých úrovní služby. Každá úroveň služby Premium a Pro důležité obchodní informace má maximální velikost úložiště OLTP v paměti.

Odhad požadavků na paměť pro tabulku optimalizovanou pro paměť funguje stejně jako sql Server jako v Azure SQL Database. Kontrola požadavků na paměť odhadu trvá několik minut.

Řádky proměnných tabulek a tabulek a indexů se počítají do maximální velikosti uživatelských dat. Kromě toho ALTER TABLE potřebuje dostatek místa k vytvoření nové verze celé tabulky a jejích indexů.

Po překročení tohoto limitu se můžou operace vložení a aktualizace spustit selhávají. V tomto okamžiku potřebujete buď odstranit data pro uvolnění paměti, nebo upgradovat úroveň služby nebo velikost výpočetních prostředků databáze. Další informace najdete v tématu Oprava situací v úložišti OLTP mimo paměť – Chyby 41823 a 41840.

Monitorování a upozorňování

Úložiště v paměti můžete monitorovat jako procento limitu úložiště pro velikost výpočetních prostředků na webu Azure Portal:

  1. Na stránce Přehled databáze SQL vyberte graf na stránce Monitorování. Nebo v navigační nabídce vyhledejte Monitorování a vyberte Metriky.
  2. Vyberte Přidat metriku.
  3. V části Basic vyberte metriku v paměti OLTP Storage percent.
  4. Pokud chcete přidat upozornění, vyberte v poli Využití prostředků stránku Metrika a pak vyberte Nové pravidlo upozornění. Postupujte podle pokynů a vytvořte pravidlo upozornění na metriku.

Nebo pomocí následujícího dotazu zobrazte využití úložiště v paměti:

SELECT xtp_storage_percent FROM sys.dm_db_resource_stats;

Oprava situací v úložišti OLTP mimo paměť – Chyby 41823 a 41840

Při splnění limitu úložiště OLTP v paměti ve vaší databázi dojde k selhání operací INSERT, UPDATE, ALTER a CREATE s chybou 41823 (pro izolované databáze) nebo s chybou 41840 (pro elastické fondy). Obě chyby způsobují přerušení aktivní transakce.

Chyby 41823 a 41840 značí, že tabulky a proměnné tabulek optimalizované pro paměť v databázi nebo fondu dosáhly maximální velikosti úložiště OLTP v paměti.

Pokud chcete tuto chybu vyřešit, proveďte následující:

  • Odstranění dat z tabulek optimalizovaných pro paměť, potenciálně snižování zátěže dat do tradičních tabulek založených na disku; Nebo
  • Upgradujte úroveň služby na úroveň služby s dostatečným úložištěm v paměti pro data, která potřebujete zachovat v tabulkách optimalizovaných pro paměť.

Poznámka:

Ve výjimečných případech můžou být chyby 41823 a 41840 přechodné, což znamená, že je k dispozici dostatek úložiště OLTP v paměti a opakování operace proběhne úspěšně. Proto doporučujeme monitorovat celkové dostupné úložiště OLTP v paměti a opakovat při prvním výskytu chyby 41823 nebo 41840. Další informace o logice opakování najdete v tématu Detekce konfliktů a logika opakování s OLTP v paměti.

Monitorování pomocí zobrazení dynamické správy

  • Díky pravidelnému monitorování spotřeby paměti můžete určit, jak se spotřeba paměti zvětšuje a kolik hlavní místnosti jste nechali v limitech prostředků. Určete, kolik paměti spotřebovávají objekty ve vaší databázi nebo instanci. Zobrazení dynamické správy například sys.dm_db_xtp_table_memory_stats nebo sys.dm_os_memory_clerks.

    • Spotřebu paměti pro všechny uživatelské tabulky, indexy a systémové objekty můžete najít pomocí sys.dm_db_xtp_table_memory_statsdotazu:

      SELECT object_name(object_id) AS [Name], *  
         FROM sys.dm_db_xtp_table_memory_stats;
      
    • Paměť přidělená modulu OLTP v paměti a objekty optimalizované pro paměť se spravují stejným způsobem jako jakýkoli jiný příjemce paměti v databázi. Pracovníci paměti typu MEMORYCLERK_XTP účty pro veškerou paměť přidělenou modulu OLTP v paměti. Pomocí následujícího dotazu sys.dm_os_memory_clerks vyhledejte veškerou paměť používanou modulem OLTP v paměti, včetně paměti vyhrazené pro konkrétní databáze.

      -- 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  
      
    
    
  • Další informace o chybách nedostatku paměti ve službě Azure SQL Database najdete také v zobrazení dynamické správy sys.dm_os_out_of_memory_events. Příklad:

    SELECT * FROM sys.dm_os_out_of_memory_events ORDER BY event_time DESC;