Freigeben über


sys.dm_db_xtp_memory_consumers (Transact-SQL)

Meldet die Arbeitsspeicherconsumer auf Datenbankebene im In-Memory OLTP-Datenbankmodul. Diese Sicht gibt eine Zeile für jeden Arbeitsspeicherconsumer zurück, den das Datenbankmodul verwendet.

Weitere Informationen finden Sie unter In-Memory OLTP (Arbeitsspeicheroptimierung).

Gilt für: SQL Server (SQL Server 2014 bis aktuelle Version).

Spaltenname

Datentyp

Beschreibung

memory_consumer_id

bigint

ID (intern) des Arbeitsspeicherconsumers.

memory_consumer_type

int

Der Typ des Arbeitsspeicherconsumers:

  • 0=Aggregation. (Aggregiert die Arbeitsspeichernutzung von mindestens zwei Consumern. Sollte nicht angezeigt werden.)

  • 2=VARHEAP (Verfolgt die Arbeitsspeichernutzung für einen Heap variabler Länge nach.)

  • 3=HASH (Verfolgt die Arbeitsspeichernutzung für einen Index nach.)

  • 5=DB-Seitenpool (Verfolgt die Arbeitsspeichernutzung für einen Datenbank-Seitenpool nach, der für Laufzeitvorgänge verwendet wird, z. B. Tabellenvariablen und einige serialisierbare Scans. Es gibt nur einen Arbeitsspeicherconsumer dieses Typs pro Datenbank.)

memory_consumer_type_desc

nvarchar(64)

Typ des Arbeitsspeicherconsumers: VARHEAP, HASH oder PGPOOL.

  • 0 – (Sollte nicht angezeigt werden.)

  • 2 - VARHEAP

  • 3 – HASH

  • 5 - PGPOOL

memory_consumer_desc

nvarchar(64)

Die Beschreibung der Arbeitsspeicherconsumer-Instanz:

  • VARHEAP

    Datenbankheap. Wird zum Zuordnen von Benutzerdaten für eine Datenbank (d. h. Zeilen) verwendet.

    Datenbank-Systemheap. Wird zum Zuordnen von Datenbankdaten verwendet, die in Speicherabbilder eingefügt werden und keine Benutzerdaten enthalten.

    Bereichsindexheap. Ein privater Heap, der vom Breichsindex zum Zuordnen von BW-Seiten verwendet wird.

  • HASH

    Keine Beschreibung, da object_id die Tabelle und index_id den Hashindex selbst angibt.

  • PGPOOL

    Für die Datenbank ist nur ein Seitenpool von 64 K vorhanden.

object_id

bigint

Die Objekt-ID, der der belegte Arbeitsspeicher attributiert wird. Ein negativer Wert für Systemobjekte.

index_id

int

Die Index-ID des Consumers (sofern vorhanden). NULL für Basistabellen.

allocated_bytes

bigint

Die 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 interne Verwendung.

sizeclass_count

int

Nur interne Verwendung.

min_sizeclass

int

Nur interne Verwendung.

max_sizeclass

int

Nur interne Verwendung.

memory_consumer_address

varbinary

Die interne Adresse des Consumers. Nur interne Verwendung.

Hinweise

In der Ausgabe verweisen die Zuordnungen auf Datenbankebene auf Benutzertabellen, Indizes und Systemtabellen. VARHEAP mit object_id = NULL verweist auf Arbeitsspeicher, der Tabellen mit Spalten variabler Länge zugeordnet ist.

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 VIEW DATABASE-Berechtigung verfügen, werden alle Spalten für Zeilen in Tabellen zurückgegeben, für die Sie die SELECT-Berechtigung besitzen.

Systemtabellen werden nur für Benutzer mit der VIEW DATABASE STATE-Berechtigung zurückgegeben.

Beispiele

-- memory consumers (database level)
SELECT OBJECT_NAME(object_id), * 
FROM sys.dm_db_xtp_memory_consumers;

Benutzerszenario

-- memory consumers (database level)

select  convert(char(10), object_name(object_id)) as Name, 
convert(char(10),memory_consumer_type_desc ) as memory_consumer_type_desc, object_id,index_id, allocated_bytes,  used_bytes 
from sys.dm_db_xtp_memory_consumers

Im Folgenden die Ausgabe mit einer Teilmenge der Spalten. Die Zuordnungen auf Datenbankebene verweisen auf Benutzertabellen, Indizes und Systemtabellen. VARHEAP mit object_id = NULL (letzte Zeile) verweist auf Arbeitsspeicher, der Datenzeilen der Tabellen (in diesem Beispiel "t1") zugeordnet ist. In MB konvertiert betragen die belegten Bytes 1340 MB.

Name       memory_consumer_type_desc object_id   index_id    allocated_bytes      used_bytes
---------- ------------------------- ----------- ----------- -------------------- --------------------
t3         HASH                      629577281   2           8388608              8388608
t2         HASH                      597577167   2           8388608              8388608
t1         HASH                      565577053   2           1048576              1048576
NULL       HASH                      -6          1           2048                 2048
NULL       VARHEAP                   -6          NULL        0                    0
NULL       HASH                      -5          3           8192                 8192
NULL       HASH                      -5          2           8192                 8192
NULL       HASH                      -5          1           8192                 8192
NULL       HASH                      -4          1           2048                 2048
NULL       VARHEAP                   -4          NULL        0                    0
NULL       HASH                      -3          1           2048                 2048
NULL       HASH                      -2          2           8192                 8192
NULL       HASH                      -2          1           8192                 8192
NULL       VARHEAP                   -2          NULL        196608               26496
NULL       HASH                      0           1           2048                 2048
NULL       PGPOOL                    0           NULL        0                    0
NULL       VARHEAP                   NULL        NULL        1405943808           1231220560

(17 row(s) affected)

Der gesamte dieser DMV zugeordnete und von ihr belegte Arbeitsspeicher ist gleichwertig mit der Objektebene in sys.dm_db_xtp_table_memory_stats (Transact-SQL).

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


total_allocated_MB   total_used_MB
-------------------- --------------------
1358                 1191

Siehe auch

Konzepte

Dynamische Verwaltungssichten für speicheroptimierte Tabellen (Transact-SQL)