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.
- Databáze a elastické fondy v úrovních služeb Premium (DTU) a Pro důležité obchodní informace (vCore) podporují OLTP v paměti.
- Úroveň služby Hyperscale podporuje podmnožinu objektů OLTP v paměti, ale nezahrnuje tabulky optimalizované pro paměť. Další informace najdete v tématu Omezení hyperškálování.
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.
- Omezení prostředků na základě DTU – jednoúčelová databáze
- Limity prostředků na základě DTU – elastické fondy
- Limity prostředků založené na virtuálních jádrech – izolované databáze
- Limity prostředků na základě virtuálních jader – elastické fondy
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:
- 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.
- Vyberte Přidat metriku.
- V části Basic vyberte metriku v paměti OLTP Storage percent.
- 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 INSERT
UPDATE
ALTER
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_stats
dotazu: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;