Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Raportuje konsumentów pamięci na poziomie bazy danych w silniku bazy danych In-Memory OLTP. Widok zwraca wiersz dla każdego konsumenta pamięci, którego używa silnik bazy danych. Użyj tego DMV, aby zobaczyć, jak pamięć jest rozłożona między różnymi wewnętrznymi obiektami.
Aby uzyskać więcej informacji, zobacz In-Memory OMÓWIENIE OLTP i scenariusze użycia.
Uwaga / Notatka
Wynik tego dynamicznego widoku zarządzania systemem może się różnić w zależności od zainstalowanej wersji SQL Server.
| Nazwa kolumny | Typ danych | Description |
|---|---|---|
memory_consumer_id |
bigint | ID (wewnętrzny) konsumenta pamięci. |
memory_consumer_type |
int | Typ konsumenta pamięci: 0 = Agregacja. (Agreguje zużycie pamięci przez dwóch lub więcej konsumentów. Nie powinno być wyświetlane.) 2 = VARHEAP (Śledzi zużycie pamięci dla sterty o zmiennej długości.)3 = HASH (Śledzi zużycie pamięci dla indeksu.)4 = PGPOOL (Pula stron bazy danych: Śledzi zużycie pamięci dla puli stron bazy danych używanej do operacji w czasie działania. Na przykład zmienne tabelowe i niektóre skany serializowane. Na bazę danych jest tylko jeden użytkownik pamięci tego typu.) |
memory_consumer_type_desc |
nvarchar(64) | Typ konsumenta pamięci: VARHEAP, HASH, lub PGPOOL.0 - (Nie powinno być wyświetlane) 2 - VARHEAP3 - HASH4 - PGPOOL |
memory_consumer_desc |
nvarchar(64) | Opis instancji konsumenta pamięci. Aby uzyskać więcej informacji, zapoznaj się z tabelą, która się zachowuje. |
object_id |
bigint | ID obiektu, do którego przypisana jest przydzielona pamięć. Wartość ujemna dla obiektów systemowych. |
xtp_object_id |
bigint | In-Memory ID obiektu OLTP odpowiadający tabeli zoptymalizowanej pod pamięć. |
index_id |
int | Identyfikator indeksu konsumenta (jeśli taki istnieje). NULL dla tabel bazowych. |
allocated_bytes |
bigint | Liczba bajtów zarezerwowanych dla tego konsumenta. |
used_bytes |
bigint | Bajty używane przez tego konsumenta. Dotyczy tylko .VARHEAP |
allocation_count |
int | Liczba alokacji. |
partition_count |
int | Tylko do użytku wewnętrznego. |
sizeclass_count |
int | Tylko do użytku wewnętrznego. |
min_sizeclass |
int | Tylko do użytku wewnętrznego. |
max_sizeclass |
int | Tylko do użytku wewnętrznego. |
memory_consumer_address |
varbinary | Wewnętrzny adres odbiorcy. Tylko do użytku wewnętrznego. |
Poniższa tabela opisuje konsumpców pamięci określonych w kolumnie memory_consumer_type :
| Konsument pamięci | Description | Typ |
|---|---|---|
256K page pool |
Pula pamięci używana podczas aktywności punktów kontrolnych. | PGPOOL |
4K page pool |
Pula pamięci używana podczas aktywności punktów kontrolnych. | PGPOOL |
Checkpoint table |
Tylko do użytku wewnętrznego. | VARHEAP |
Ckpt file table |
Tylko do użytku wewnętrznego. | VARHEAP |
Ckpt file watermark table |
Tylko do użytku wewnętrznego. | VARHEAP |
Database internal heap |
Używane do alokacji danych bazy danych zawartych w zrzutach pamięci, które nie zawierają danych użytkownika. | VARHEAP |
Database user heap |
Używany do alokacji danych użytkownika do bazy danych (wierszy). | VARHEAP |
Encryption table |
Tylko do użytku wewnętrznego. | VARHEAP |
Hash index |
Śledzi zużycie pamięci dla indeksu. Wskazuje object_id tabelę oraz samego index_id indeksu skrótu. |
HASH |
Large Rows File table |
Tylko do użytku wewnętrznego. | VARHEAP |
LOB Page Allocator |
Pamięć stosu używana przez duże wiersze. | VARHEAP |
Logical range index partition table |
Tylko do użytku wewnętrznego. | VARHEAP |
Logical root fragment table |
Tylko do użytku wewnętrznego. | VARHEAP |
Logical Root table |
Tylko do użytku wewnętrznego. | VARHEAP |
Logical Sequence Object table |
Tylko do użytku wewnętrznego. | VARHEAP |
Physical range index partition table |
Tylko do użytku wewnętrznego. | VARHEAP |
Physical root fragment table |
Tylko do użytku wewnętrznego. | VARHEAP |
Physical Root table |
Tylko do użytku wewnętrznego. | VARHEAP |
Physical Sequence object table |
Tylko do użytku wewnętrznego. | VARHEAP |
Range index heap |
Prywatna kopca używana przez indeks zakresu do alokacji stron drzewa Bw. | VARHEAP |
Storage internal heap |
Tylko do użytku wewnętrznego. | VARHEAP |
Storage user heap |
Tylko do użytku wewnętrznego. | VARHEAP |
Table heap |
Pamięć kopcowa używana przez In-Memory tabele. | VARHEAP |
Tail cache 256K page pool |
Tylko do użytku wewnętrznego. | PGPOOL |
Tx Segment table |
Tylko do użytku wewnętrznego. | VARHEAP |
Uwagi
Gdy tabela zoptymalizowana pod pamięć ma indeks columnstore, system używa wewnętrznych tabel, które zużywają część pamięci, do śledzenia danych dla indeksu columnstore. Szczegóły dotyczące tych wewnętrznych tabel i przykładowych zapytań pokazujących ich zużycie pamięci można znaleźć w sys.memory_optimized_tables_internal_attributes (Transact-SQL).
Permissions
Wszystkie wiersze są zwracane, jeśli masz uprawnienia VIEW DATABASE STATE na bieżącej bazie danych. W przeciwnym razie zwracany jest pusty zestaw wierszy.
Jeśli nie masz uprawnień VIEW DATABASE, wszystkie kolumny są zwracane dla wierszy w tabelach, na które masz uprawnienia SELECT.
W SQL Server 2019 (15.x) i poprzednich wersjach tabele systemowe zwracane są tylko dla użytkowników posiadających uprawnienia VIEW DATABASE STATE.
W przypadku SQL Server 2022 (16.x) i późniejszych wersji wymagane jest pozwolenie VIEW DATABASE PERFORMANCE STATE na bazie danych.
Przykłady
Zapytania o konsumentów pamięci w aktualnej bazie danych
Wykonaj następujące zapytanie względem przykładowej WideWorldImporters bazy danych, która zawiera tabele zoptymalizowane pod pamięć:
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;
Oto zestaw wyników.
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
Całkowita ilość przydzielonej i używanej pamięci z tego DMV jest taka sama jak poziom obiektu w 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;
Oto zestaw wyników.
total_allocated_MB total_used_MB
------------------ --------------------
92 51
Treści powiązane
- Wprowadzenie do tabel zoptymalizowanych pod kątem pamięci
- Memory-Optimized Dynamiczne widoki zarządzania tabelą (Transact-SQL)
- In-Memory przegląd i scenariusze użycia OLTP
- Optymalizowanie wydajności przy użyciu technologii w pamięci w usłudze Azure SQL Database
- Optymalizowanie wydajności przy użyciu technologii w pamięci w usłudze Azure SQL Managed Instance