적용 대상: SQL Server 2016(13.x) 이상 버전
Azure SQL Managed Instance
기존 보기를 사용하여 모든 시스템 버전 메모리 최적화 테이블에 대한 자세하고 요약된 메모리 사용을 추적할 수 있습니다.
시간적 테이블 모니터링
다음 예제 코드를 사용하여 인메모리 OLTP를 사용하는 시간 테이블을 모니터링하세요. 이 예시들은 일반적인 표 표현식(CTE)을 사용합니다.
자세한 메모리 사용량
다음 쿼리는 메인 시스템 버전 관리 및 내부 기록 준비 테이블별로 분할된 메모리 사용량을 자세히 설명합니다.
WITH InMemoryTemporalTables
AS (SELECT SCHEMA_NAME(t1.schema_id) AS TemporalTableSchema,
t1.object_id AS TemporalTableObjectId,
t1.object_id AS InternalTableObjectId,
OBJECT_NAME(t1.parent_object_id) AS TemporalTableName,
t1.Name AS InternalHistoryStagingName
FROM sys.internal_tables AS t1
INNER JOIN sys.tables AS t1
ON t1.parent_object_id = t1.object_id
WHERE t1.is_memory_optimized = 1
AND t1.temporal_type = 2)
SELECT TemporalTableSchema,
t.TemporalTableName,
t.InternalHistoryStagingName,
CASE
WHEN c.object_id = t.TemporalTableObjectId
THEN 'Temporal Table Consumption'
ELSE 'Internal Table Consumption'
END AS ConsumedBy,
c.*
FROM sys.dm_db_xtp_memory_consumers AS c
INNER JOIN InMemoryTemporalTables AS t
ON c.object_id = t.TemporalTableObjectId
OR c.object_id = t.InternalTableObjectId
WHERE t.TemporalTableSchema = 'dbo'
AND t.TemporalTableName = 'FXCurrencyPairs';
메모리 사용량 요약
다음 쿼리는 시스템 버전 관리 메모리 최적화 테이블에 대한 총 메모리 사용량을 요약합니다.
;WITH InMemoryTemporalTables
AS (
SELECT SCHEMA_NAME(t1.schema_id) AS TemporalTableSchema,
t1.object_id AS TemporalTableObjectId,
t1.object_id AS InternalTableObjectId,
OBJECT_NAME(t1.parent_object_id) AS TemporalTableName,
t1.Name AS InternalHistoryStagingName
FROM sys.internal_tables t1
INNER JOIN sys.tables t1
ON t1.parent_object_id = t1.object_id
WHERE t1.is_memory_optimized = 1
AND t1.temporal_type = 2
),
DetailedConsumption
AS (
SELECT TemporalTableSchema,
t.TemporalTableName,
t.InternalHistoryStagingName,
CASE
WHEN c.object_id = t.TemporalTableObjectId
THEN 'Temporal Table Consumption'
ELSE 'Internal Table Consumption'
END AS ConsumedBy,
c.*
FROM sys.dm_db_xtp_memory_consumers c
INNER JOIN InMemoryTemporalTables t
ON c.object_id = t.TemporalTableObjectId
OR c.object_id = t.InternalTableObjectId
)
SELECT TemporalTableSchema TemporalTableName,
sum(allocated_bytes) AS allocated_bytes,
sum(used_bytes) AS used_bytes
FROM DetailedConsumption
WHERE TemporalTableSchema = 'dbo' ANDTemporalTableName = 'FXCurrencyPairs'
GROUP BY TemporalTableSchema,
TemporalTableName;