메모리 내 OLTP 데이터베이스 엔진에서 데이터베이스 수준 메모리 소비자를 보고합니다. 뷰는 데이터베이스 엔진에 사용되는 각 메모리 소비자에 대한 행을 반환합니다.
자세한 내용은 메모리 내 OLTP(메모리 내 최적화)를 참조하십시오.
적용 대상: SQL Server(SQL Server 2014 - 현재 버전) |
열 이름 |
데이터 형식 |
설명 |
|---|---|---|
memory_consumer_id |
bigint |
메모리 소비자의 ID(내부)입니다. |
memory_consumer_type |
int |
메모리 소비자 유형입니다.
|
memory_consumer_type_desc |
nvarchar(64) |
메모리 소비자의 유형으로, VARHEAP, HASH 또는 PGPOOL입니다.
|
memory_consumer_desc |
nvarchar(64) |
메모리 소비자 인스턴스에 대한 설명입니다.
|
object_id |
bigint |
할당된 메모리가 속하는 개체 ID입니다. 시스템 개체에 대한 음수 값입니다. |
index_id |
int |
소비자의 인덱스 ID입니다(해당하는 경우). 기본 테이블의 경우 NULL입니다. |
allocated_bytes |
bigint |
이 소비자에 대해 예약된 바이트 수입니다. |
used_bytes |
bigint |
이 소비자가 사용하는 바이트입니다. varheap에만 적용됩니다. |
allocation_count |
int |
할당 수입니다. |
partition_count |
int |
내부적으로만 사용됩니다. |
sizeclass_count |
int |
내부적으로만 사용됩니다. |
min_sizeclass |
int |
내부적으로만 사용됩니다. |
max_sizeclass |
int |
내부적으로만 사용됩니다. |
memory_consumer_address |
varbinary |
소비자의 내부 주소입니다. 내부용으로만 사용할 수 있습니다. |
주의
출력에서 데이터베이스 수준의 할당자는 사용자 테이블, 인덱스 및 시스템 테이블을 나타냅니다. object_id = NULL인 VARHEAP는 가변 길이 열을 포함하는 테이블에 할당된 메모리를 나타냅니다.
사용 권한
현재 데이터베이스에 대해 VIEW DATABASE STATE 권한이 있으면 모든 행이 반환됩니다. 그렇지 않으면 빈 행 집합이 반환됩니다.
VIEW DATABASE 권한이 없으면 SELECT 권한이 있는 테이블의 행에 대해 모든 열이 반환됩니다.
시스템 테이블은 VIEW DATABASE STATE 권한이 있는 사용자의 경우에만 반환됩니다.
예
-- memory consumers (database level)
SELECT OBJECT_NAME(object_id), *
FROM sys.dm_db_xtp_memory_consumers;
사용자 시나리오
-- 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
열의 하위 집합을 사용한 출력은 다음과 같습니다. 데이터베이스 수준의 할당자는 사용자 테이블, 인덱스 및 시스템 테이블을 나타냅니다. object_id = NULL(마지막 행)인 VARHEAP는 테이블의 데이터 행에 할당된 메모리를 나타냅니다(이 예에서는 t1). 할당된 바이트를 MB로 환산하면 1340MB입니다.
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)
이 DMV에서 할당되고 사용되는 총 메모리는 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