sys.dm_db_xtp_memory_consumers (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance
Meldet die Speicherverbraucher auf Datenbankebene im OLTP-Datenbankmodul auf Speicherebene. Diese Sicht gibt eine Zeile für jeden Arbeitsspeicherconsumer zurück, den die Datenbank-Engine verwendet. Verwenden Sie diesen DMV, um zu sehen, wie der Speicher über verschiedene interne Objekte verteilt wird.
Weitere Informationen finden Sie in den Übersichts- und Verwendungsszenarien von In-Memory OLTP.
Hinweis
Die Ausgabe dieser dynamischen Verwaltungsansicht des Systems kann je nach installierter SQL Server-Version unterschiedlich sein.
Spaltenname | Datentyp | BESCHREIBUNG |
---|---|---|
memory_consumer_id |
bigint | ID (intern) des Arbeitsspeicherconsumers. |
memory_consumer_type |
int | Der Typ des Arbeitsspeicherconsumers: 0 = Aggregation. (Aggregiert die Speicherauslastung von mindestens zwei Verbrauchern. Sie sollte nicht angezeigt werden.) 2 = VARHEAP (Verfolgt die Speicherauslastung für einen Heap mit variabler Länge nach.)3 = HASH (Verfolgt den Speicherverbrauch für einen Index nach.)4 = PGPOOL (DB-Seitenpool: Verfolgt die Speichernutzung für einen Datenbankseitenpool, der für Laufzeitvorgänge verwendet wird. Tabellenvariablen und einige serialisierbare Scans. Pro Datenbank gibt es nur einen Speicherverbraucher dieses Typs.) |
memory_consumer_type_desc |
nvarchar(64) | Typ des Speicherverbrauchs: VARHEAP , HASH , oder PGPOOL .0 - (Sollte nicht angezeigt werden) 2- VARHEAP 3- HASH 4- PGPOOL |
memory_consumer_desc |
nvarchar(64) | Beschreibung der Speicher-Consumer-Instanz. Weitere Informationen hierzu können Sie in der folgenden Tabelle anzeigen. |
object_id |
bigint | Die Objekt-ID, der der belegte Arbeitsspeicher attributiert wird. Ein negativer Wert für Systemobjekte. |
xtp_object_id |
bigint | Die IN-Memory OLTP-Objekt-ID, die der speicheroptimierten Tabelle entspricht. |
index_id |
int | Die Index-ID des Consumers (sofern vorhanden). NULL für Basistabellen. |
allocated_bytes |
bigint | Anzahl der für den Consumer reservierten Bytes. |
used_bytes |
bigint | Die von diesem Consumer verwendeten Bytes. Gilt nur für VARHEAP . |
allocation_count |
int | Anzahl der Zuordnungen. |
partition_count |
int | Nur zur internen Verwendung. |
sizeclass_count |
int | Nur zur internen Verwendung. |
min_sizeclass |
int | Nur zur internen Verwendung. |
max_sizeclass |
int | Nur zur internen Verwendung. |
memory_consumer_address |
varbinary | Interne Adresse des Consumers. Nur zur internen Verwendung. |
In der folgenden Tabelle werden die speicherverbraucher beschrieben, die in der memory_consumer_type
Spalte angegeben sind:
Speicherverbraucher | Beschreibung | type |
---|---|---|
256K page pool |
Speicherpool, der während der Prüfpunktaktivität verwendet wird. | PGPOOL |
4K page pool |
Speicherpool, der während der Prüfpunktaktivität verwendet wird. | PGPOOL |
Checkpoint table |
Nur zur internen Verwendung. | VARHEAP |
Ckpt file table |
Nur zur internen Verwendung. | VARHEAP |
Ckpt file watermark table |
Nur zur internen Verwendung. | VARHEAP |
Database internal heap |
Wird verwendet, um Datenbankdaten zuzuweisen, die in Speicherabbildern enthalten sind, und keine Benutzerdaten enthalten. | VARHEAP |
Database user heap |
Wird zum Zuordnen von Benutzerdaten für eine Datenbank (d. h. Zeilen) verwendet. | VARHEAP |
Encryption table |
Nur zur internen Verwendung. | VARHEAP |
Hash index |
Verfolgt die Speicherauslastung für einen Index nach. Dies object_id gibt die Tabelle und den index_id Hashindex selbst an. |
HASH |
Large Rows File table |
Nur zur internen Verwendung. | VARHEAP |
LOB Page Allocator |
Heap-Speicher, der von großen Zeilen verwendet wird. | VARHEAP |
Logical range index partition table |
Nur zur internen Verwendung. | VARHEAP |
Logical root fragment table |
Nur zur internen Verwendung. | VARHEAP |
Logical Root table |
Nur zur internen Verwendung. | VARHEAP |
Logical Sequence Object table |
Nur zur internen Verwendung. | VARHEAP |
Physical range index partition table |
Nur zur internen Verwendung. | VARHEAP |
Physical root fragment table |
Nur zur internen Verwendung. | VARHEAP |
Physical Root table |
Nur zur internen Verwendung. | VARHEAP |
Physical Sequence object table |
Nur zur internen Verwendung. | VARHEAP |
Range index heap |
Privater Heap, der vom Bereichsindex zum Zuordnen von Bw-Strukturseiten verwendet wird. | VARHEAP |
Storage internal heap |
Nur zur internen Verwendung. | VARHEAP |
Storage user heap |
Nur zur internen Verwendung. | VARHEAP |
Table heap |
Heap-Speicher, der von In-Memory-Tabellen verwendet wird. | VARHEAP |
Tail cache 256K page pool |
Nur zur internen Verwendung. | PGPOOL |
Tx Segment table |
Nur zur internen Verwendung. | VARHEAP |
Hinweise
Wenn eine speicheroptimierte Tabelle über einen Spaltenspeicherindex verfügt, verwendet das System einige interne Tabellen, die Speicher verbrauchen, um Daten für den Spaltenspeicherindex nachzuverfolgen. Ausführliche Informationen zu diesen internen Tabellen und Beispielabfragen, die ihren Speicherverbrauch anzeigen, finden Sie unter sys.memory_optimized_tables_internal_attributes (Transact-SQL).
Berechtigungen
Alle Zeilen werden zurückgegeben, wenn Sie über die VIEW DATABASE STATE-Berechtigung für die aktuelle Datenbank verfügen. Andernfalls wird ein leeres Rowset zurückgegeben.
Wenn Sie nicht über die Berechtigung "DATENBANK ANZEIGEN" verfügen, werden alle Spalten für Zeilen in Tabellen zurückgegeben, für die Sie SELECT-Berechtigungen besitzen.
In SQL Server 2019 (15.x) und früheren Versionen werden Systemtabellen nur für Benutzer mit VIEW DATABASE STATE-Berechtigung zurückgegeben.
Für SQL Server 2022 (16.x) und höhere Versionen benötigen Sie die BERECHTIGUNG "DATENBANKLEISTUNGSSTATUS ANZEIGEN" für die Datenbank.
Beispiele
Abfragen von Speicherverbrauchern in der aktuellen Datenbank
Führen Sie die folgende Abfrage für die Beispieldatenbank WideWorldImporters
aus, die speicheroptimierte Tabellen enthält:
SELECT CONVERT(CHAR(10), OBJECT_NAME(object_id)) AS Name,
memory_consumer_type_desc,
memory_consumer_desc,
object_id,
index_id,
allocated_bytes,
used_bytes
FROM sys.dm_db_xtp_memory_consumers;
Hier sehen Sie das Ergebnis.
Name memory_consumer_type_desc memory_consumer_desc object_id index_id allocated_bytes used_bytes
---------- ------------------------- -------------------------------------- ----------- ----------- ----------------- ------------
NULL VARHEAP Range index heap -15 1 131072 176
NULL VARHEAP Physical range index partition table -15 NULL 0 0
NULL VARHEAP Range index heap -14 2 131072 192
NULL VARHEAP Range index heap -14 1 131072 208
NULL VARHEAP Large Rows File table -14 NULL 0 0
NULL HASH Hash index -13 1 2048 2048
NULL VARHEAP Encryption table -13 NULL 0 0
NULL HASH Hash index -10 2 32768 32768
NULL HASH Hash index -10 1 32768 32768
NULL VARHEAP Tx Segment table -10 NULL 65536 544
NULL HASH Hash index -11 1 32768 32768
NULL VARHEAP Checkpoint table -11 NULL 131072 320
NULL HASH Hash index -12 1 8192 8192
NULL VARHEAP Ckpt file table -12 NULL 131072 3120
NULL HASH Hash index -9 1 2048 2048
NULL VARHEAP Ckpt file watermark table -9 NULL 131072 1280
NULL VARHEAP Range index heap -7 1 262144 976
NULL VARHEAP Physical Sequence Object table -7 NULL 65536 864
NULL HASH Hash index -3 1 2048 2048
NULL VARHEAP Physical root fragment table -3 NULL 0 0
NULL HASH Hash index 0 2 8192 8192
NULL HASH Hash index 0 1 32768 32768
NULL VARHEAP Physical Root table NULL NULL 327680 12160
NULL PGPOOL Tail cache 256K page pool 0 NULL 262144 262144
NULL PGPOOL 256K page pool 0 NULL 35389440 18874368
NULL PGPOOL 64K page pool 0 NULL 131072 65536
NULL PGPOOL 4K page pool 0 NULL 49152 40960
NULL VARHEAP Storage internal heap NULL NULL 786432 4816
NULL VARHEAP Storage user heap NULL NULL 262144 22496
ColdRoomTe VARHEAP Range index heap 1179151246 3 196608 800
ColdRoomTe VARHEAP Range index heap 1179151246 2 196608 800
memory_opt VARHEAP Range index heap 1211151360 2 131072 208
VehicleTem VARHEAP Range index heap 1243151474 2 11796480 1181824
ColdRoomTe VARHEAP Table heap 1179151246 NULL 65536 384
memory_opt VARHEAP Table heap 1211151360 NULL 0 0
VehicleTem VARHEAP Table heap 1243151474 NULL 33423360 32802112
VehicleTem VARHEAP Range index heap 1243151474 2 131072 160
VehicleTem VARHEAP LOB Page Allocator 1243151474 NULL 0 0
VehicleTem VARHEAP Table heap 1243151474 NULL 0 0
NULL VARHEAP Range index heap -15 1 327680 176
NULL VARHEAP Logical range index partition table -15 NULL 0 0
NULL HASH Hash index -7 1 32768 32768
NULL VARHEAP Logical Sequence Object table -7 NULL 65536 600
NULL HASH Hash index -3 1 2048 2048
NULL VARHEAP Logical root fragment table -3 NULL 0 0
NULL HASH Hash index 0 1 32768 32768
NULL VARHEAP Logical Root table NULL NULL 327680 11120
NULL PGPOOL Tail cache 256K page pool 0 NULL 262144 0
NULL PGPOOL 256K page pool 0 NULL 10485760 0
NULL PGPOOL 64K page pool 0 NULL 131072 0
NULL PGPOOL 4K page pool 0 NULL 32768 0
NULL VARHEAP Database internal heap NULL NULL 1048576 8016
NULL VARHEAP Database user heap NULL NULL 65536 1024
Der von diesem DMV zugewiesene und verwendete Gesamtspeicher entspricht der Objektebene in sys.dm_db_xtp_table_memory_stats.
SELECT SUM(allocated_bytes) / (1024 * 1024) AS total_allocated_MB,
SUM(used_bytes) / (1024 * 1024) AS total_used_MB
FROM sys.dm_db_xtp_memory_consumers;
Hier sehen Sie das Ergebnis.
total_allocated_MB total_used_MB
------------------ --------------------
92 51
Zugehöriger Inhalt
- Einführung in speicheroptimierte Tabellen
- Speicheroptimierte Tabellen-Dynamische Verwaltungsansichten (Transact-SQL)
- Übersicht über In-Memory OLTP und Verwendungsszenarien
- Optimieren der Leistung mithilfe von In-Memory-Technologien in Azure SQL-Datenbank
- Optimieren der Leistung mithilfe von In-Memory-Technologien in Azure SQL verwaltete Instanz