Überwachen des In-Memory-OLTP-Speichers in Azure SQL Managed Instance
Gilt für: Azure SQL Managed Instance
Bei der Verwendung von In-Memory-OLTP befinden sich die Daten der speicheroptimierten Tabellen und Tabellenvariablen im In-Memory-OLTP-Speicher.
Bestimmen, ob genügend In-Memory-OLTP-Speicherplatz für die Daten zur Verfügung steht
Die unternehmenskritische Dienstebene enthält eine bestimmte Menge an Max In-Memory OLTP-Speicher, die durch die Anzahl der vCores bestimmt wird.
Das Einschätzen der Arbeitsspeicheranforderungen für eine speicheroptimierte Tabelle funktioniert für SQL Server genauso wie in Azure SQL Managed Instance. Nehmen Sie sich einige Minuten Zeit, um den Artikel Schätzen der Arbeitsspeicheranforderungen speicheroptimierter Tabellen zu lesen.
Sowohl die Tabellen- und Tabellenvariablenzeilen als auch die Indizes werden in die maximale Größe für Benutzerdaten eingerechnet. Darüber hinaus benötigt ALTER TABLE
genügend Platz, um eine neue Version der gesamten Tabelle und ihrer Indizes zu erstellen.
Sobald diese Grenze überschritten ist, können Einfüge- und Aktualisierungsvorgänge mit der Fehlermeldung 41823 fehlschlagen.
Behandeln von Situationen mit zu wenig In-Memory-OLTP-Speicher: Fehler 41823
Bei Erreichen der Obergrenze des In-Memory-OLTP-Speichers in Ihrer Datenbank tritt bei INSERT-, UPDATE-, ALTER- und CREATE-Vorgängen der Fehler 41823 auf. Dieser Fehler kann zum Abbruch der aktiven Transaktion führen.
Der Fehler 41823 zeigt an, dass die speicheroptimierten Tabellen und Tabellenvariablen in der Instance die maximale In-Memory-OLTP-Speichergröße erreicht haben.
Beheben Sie den Fehler mit einer der folgenden Methoden:
- Löschen Sie Daten aus den speicheroptimierten Tabellen – Sie können die Daten beispielsweise in herkömmliche datenträgerbasierte Tabellen auslagern.
- Aktualisieren Sie den vCore Count und fügen Sie In-Memory-Speicher für die Daten hinzu, die Sie in speicheroptimierten Tabellen aufbewahren müssen.
Hinweis
In seltenen Fällen kann der Fehler 41823 vorübergehend sein, d. h. es ist genügend In-Memory-OLTP-Speicher verfügbar, und der erneute Versuch des Vorgangs ist erfolgreich. Es empfiehlt sich daher, den insgesamt verfügbaren In-Memory OLTP-Speicher zu überwachen und den Vorgang beim erstmaligen Auftreten des Fehlers 41823 zu wiederholen. Weitere Informationen zur Wiederholungslogik finden Sie unter Konflikterkennung und Wiederholungslogik.
Überwachen mit DMVs
Indem Sie den Speicherverbrauch regelmäßig überwachen, können Sie feststellen, wie der Speicherverbrauch steigt und wie viel Spielraum Sie bei den Ressourcenlimits noch haben. Identifizieren Sie, wie viel Arbeitsspeicher von den Objekten in der Datenbank oder Instanz beansprucht wird. Zum Beispiel die DMVs sys.dm_db_xtp_table_memory_stats oder sys.dm_os_memory_clerks.
Sie können die Arbeitsspeichernutzung für alle Benutzertabellen, Indizes und Systemobjekte ermitteln, indem Sie
sys.dm_db_xtp_table_memory_stats
abfragen:SELECT object_name(object_id) AS [Name], * FROM sys.dm_db_xtp_table_memory_stats;
Der von der In-Memory-OLTP-Engine und den speicheroptimierten Objekten belegte Arbeitsspeicher wird auf dieselbe Weise wie jeder andere Arbeitsspeicherconsumer innerhalb einer Datenbank verwaltet. Der gesamte von der In-Memory-OLTP-Engine belegte Arbeitsspeicher wird von Arbeitsspeicherclerk des Typs MEMORYCLERK_XTP nachverfolgt. Verwenden Sie die folgende Abfrage auf
sys.dm_os_memory_clerks
, um den gesamten von der In-Memory-OLTP-Engine verwendeten Speicher zu ermitteln, einschließlich des Speichers, der für bestimmte Datenbanken reserviert ist.-- 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
Mit der dynamischen Verwaltungssicht sys.dm_os_out_of_memory_events erhalten Sie weitere Informationen zu Fehlern, bei denen der Speicher nicht ausreicht, in Azure SQL Managed Instance. Zum Beispiel:
SELECT * FROM sys.dm_os_out_of_memory_events ORDER BY event_time DESC;
Weitere Informationen finden Sie unter Überwachen und Beheben von Problemen bei der In-Memory-OLTP-Speichernutzung.