Sdílet prostřednictvím


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, což je část paměti databáze, která je vyhrazená pro data 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 cílů služby. Každý cíl 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. Zkontrolujte požadavky na odhad paměti.

Řádky proměnných tabulek a tabulek a indexů se započítávají do limitu. Příkazy ALTER TABLE navíc potřebují dostatek paměti k vytvoření nové verze celé tabulky a jejích indexů.

Jakmile dosáhnete limitu, můžou se operace vložení a aktualizace spustit selhávají. V tomto okamžiku potřebujete buď odstranit data pro uvolnění paměti, nebo vertikálně navýšit kapacitu cíle služby vaší databáze nebo elastického fondu. Další informace najdete v tématu Oprava situací v úložišti OLTP mimo paměť – Chyby 41823 a 41840.

Monitorování a upozornění

Úložiště OLTP v paměti můžete monitorovat jako procento limitu úložiště pro cíl služby 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
ORDER BY end_time DESC;

Řešení chyb kvůli nedostatku paměti pomocí OLTP v paměti

Dosažení limitu úložiště OLTP v paměti v databázi nebo elastickém fondu může vést INSERTUPDATEALTER CREATE k selhání příkazů 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 velikost tabulek a proměnných tabulek optimalizovaných pro paměť v databázi nebo elastickém fondu dosáhla maximální velikosti úložiště OLTP v paměti.

Pokud chcete tyto chyby vyřešit, buď:

  • 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 cíl služby na jeden s dostatečným úložištěm OLTP v paměti pro data, která potřebujete zachovat v tabulkách a proměnných tabulek 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í pomocí OLTP v paměti.

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

  • Monitorováním spotřeby paměti můžete proaktivně určit, jak se spotřeba paměti zvětšuje a kolik prostoru zbývá k limitům prostředků. Určete, kolik paměti spotřebovávají objekty ve vaší databázi nebo instanci. Můžete použít zobrazení dynamické správy 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 ostatní příjemci paměti v databázi. Pracovníci MEMORYCLERK_XTP typu účtu paměti pro veškerou paměť přidělenou modulu OLTP v paměti. Pomocí následujícího dotazu 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 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  
      
  • 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;