Monitorare una tabella temporale con controllo delle versioni di sistema e ottimizzata per la memoria
Si applica a: SQL Server 2016 (13.x) e versioni successive Database SQL di Azure Istanza gestita di SQL di Azure
È possibile usare le viste esistenti per tenere traccia del consumo di memoria in modo riepilogativo e dettagliato per ogni tabella ottimizzata per la memoria con controllo delle versioni di sistema.
Monitorare le tabelle temporali
Usare il seguente codice di esempio per monitorare le tabelle temporali che usano OLTP in-memory. Questi esempi usano espressioni di tabella comuni (CTE).
Consumo di memoria dettagliato
La seguente query riporta nel dettaglio il consumo di memoria, suddiviso per tabella principale di staging della cronologia interna e con controllo delle versioni di sistema.
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';
Riepilogo del consumo di memoria
La seguente query riepiloga il consumo di memoria, indicando un totale per una tabella ottimizzata per la memoria con controllo delle versioni di sistema.
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;
Contenuto correlato
- Tabelle temporali con controllo delle versioni di sistema con tabelle ottimizzate per la memoria
- Creare una tabella temporale ottimizzata con controllo delle versioni di sistema e ottimizzazione per la memoria
- Usare una tabella temporale con controllo delle versioni di sistema e ottimizzazione per la memoria
- Prestazioni delle tabelle temporali con controllo delle versioni di sistema e ottimizzate per la memoria
- Tabelle temporali
- Verifiche coerenza del sistema della tabella temporale
- Gestire la conservazione dei dati storici nelle tabelle temporali con controllo delle versioni di sistema
- Funzioni e viste per i metadati delle tabelle temporali