Мониторинг оптимизированных для памяти системных темпоральных таблиц
Область применения: SQL Server 2016 (13.x) и более поздних версий База данных SQL Azure Управляемый экземпляр SQL Azure
Существующие представления можно использовать для отслеживания подробных и сводных данных о потреблении памяти для каждой оптимизированной для памяти таблицы с системным управлением версиями.
Мониторинг темпоральных таблиц
Используйте следующий пример кода для мониторинга темпоральных таблиц, использующих OLTP в памяти. В этих примерах используются распространенные табличные выражения (CTEs).
Подробное потребление памяти
Следующий запрос содержит сведения о потреблении памяти, разделенном на основную системную версию и промежуточную таблицу внутреннего журнала.
WITH InMemoryTemporalTables
AS (
SELECT SCHEMA_NAME(T1.schema_id) AS TemporalTableSchema,
T1.object_id AS TemporalTableObjectId,
IT.object_id AS InternalTableObjectId,
OBJECT_NAME(IT.parent_object_id) AS TemporalTableName,
IT.Name AS InternalHistoryStagingName
FROM sys.internal_tables IT
INNER JOIN sys.tables T1
ON IT.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 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
WHERE T.TemporalTableSchema = 'dbo'
AND T.TemporalTableName = 'FXCurrencyPairs';
Сводка потребления памяти
Следующий запрос суммирует потребление памяти с общим числом для таблицы, оптимизированной для системной версии памяти.
WITH InMemoryTemporalTables
AS (
SELECT SCHEMA_NAME(T1.schema_id) AS TemporalTableSchema,
T1.object_id AS TemporalTableObjectId,
IT.object_id AS InternalTableObjectId,
OBJECT_NAME(IT.parent_object_id) AS TemporalTableName,
IT.Name AS InternalHistoryStagingName
FROM sys.internal_tables IT
INNER JOIN sys.tables T1
ON IT.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 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;
Связанный контент
- Системные темпоральные таблицы с оптимизированными для памяти таблицами
- Создание темпоральной таблицы, оптимизированной для памяти
- Работа с темпоральными таблицами, оптимизированными для памяти
- Производительность темпоральной таблицы, оптимизированной для памяти
- Темпоральные таблицы
- Проверки согласованности систем темпоральных таблиц
- Управление хранением исторических данных в системных темпоральных таблицах
- Представления и функции темпоральных метаданных таблицы