sys.dm_db_xtp_checkpoint_files (Transact-SQL)

Si applica a:SQL Server, Database SQL di Azure e Istanza gestita di SQL di Azure.

Visualizza informazioni sui file di checkpoint OLTP in memoria, incluse le dimensioni del file, il percorso fisico e l'ID transazione.

Note

Per il checkpoint corrente che non è stato chiuso, la colonna di stato di sys.dm_db_xtp_checkpoint_files sarà UNDER CONSTRUCTION per i nuovi file. Un checkpoint viene chiuso automaticamente quando è presente un aumento sufficiente del log delle transazioni dopo l'ultimo checkpoint o se si esegue il CHECKPOINT comando. Per altre informazioni, vedere CHECKPOINT (Transact-SQL).

Un filegroup ottimizzato per la memoria usa internamente file di sola accodamento per archiviare righe inserite ed eliminate per le tabelle in memoria. Sono disponibili due tipi di file. Un file di dati contiene righe inserite mentre un file differenziale contiene riferimenti alle righe eliminate.

Per altre informazioni, vedere Creazione e gestione dell'archiviazione per oggetti ottimizzati per la memoria.

Nome della colonna Tipo Description
container_id int ID del contenitore (rappresentato come file con tipo FILESTREAM in sys.database_files) di cui fa parte il file di dati o differenziali. Join con file_id in sys.database_files (Transact-SQL).
container_guid uniqueidentifier GUID del contenitore, di cui fa parte la radice, i dati o il file differenziale. Join con file_guid nella sys.database_files tabella.
checkpoint_file_id uniqueidentifier GUID del file del checkpoint.
relative_file_path nvarchar(256) Percorso del file relativo al contenitore a cui viene eseguito il mapping.
file_type smallint -1 gratuitamente

0 per il file DI DATI.

1 per il file DELTA.

2 per il file ROOT

3 per file DI DATI DI GRANDI DIMENSIONI
descrizione_tipo_file nvarchar(60) FREE- Tutti i file gestiti come FREE sono disponibili per l'allocazione. I file liberi possono variare in base alle esigenze previste dal sistema. La dimensione massima è 1 GB.

DATA: i file di dati contengono righe inserite nelle tabelle ottimizzate per la memoria.

DELTA: i file delta contengono riferimenti alle righe nei file di dati eliminati.

ROOT: i file radice contengono metadati di sistema per gli oggetti compilati e ottimizzati per la memoria.

LARGE DATA: i file di dati di grandi dimensioni contengono valori inseriti nelle colonne (n)varchar(max) e varbinary(max), nonché i segmenti di colonna che fanno parte degli indici columnstore nelle tabelle ottimizzate per la memoria.
internal_storage_slot int Indice del file nella matrice di archiviazione interna. NULL per ROOT o per lo stato diverso da 1.
checkpoint_pair_file_id uniqueidentifier File DATA o DELTA corrispondente. NULL per ROOT.
file_size_in_bytes bigint Dimensioni del file sul disco.
file_size_used_in_bytes bigint Per le coppie di file del checkpoint ancora da popolare, questa colonna verrà aggiornata dopo il checkpoint successivo.
logical_row_count bigint Per Dati, numero di righe inserite.

Per Delta, numero di righe eliminate dopo la contabilità per la tabella di rilascio.

Per Root, NULL.
Stato smallint 0 - PRECREATO

1 - IN COSTRUZIONE

2 - ATTIVO

3 - MERGE OBIETTIVO

8 - IN ATTESA DEL TRONCAMENTO DEL LOG
descrizione_stato nvarchar(60) PRECREATED: alcuni file di checkpoint vengono preallocati per ridurre al minimo o eliminare eventuali attese per allocare nuovi file durante l'esecuzione delle transazioni. Questi file possono variare in base alle dimensioni e vengono creati in base alle esigenze stimate del carico di lavoro. Non contengono dati. Si tratta di un sovraccarico di archiviazione nei database con un filegroup MEMORY_OPTIMIZED_DATA.

UNDER CONSTRUCTION : questi file di checkpoint sono in fase di costruzione, ovvero vengono popolati in base ai record di log generati dal database e non fanno ancora parte di un checkpoint.

ACTIVE: contengono le righe inserite/eliminate dai checkpoint chiusi precedenti. Contengono il contenuto delle tabelle che vengono lette in memoria prima di applicare la parte attiva del log delle transazioni al riavvio del database. Si prevede che le dimensioni di questi file di checkpoint siano pari a circa 2x delle dimensioni in memoria delle tabelle ottimizzate per la memoria, presupponendo che l'operazione di unione sia sempre al passo con il carico di lavoro transazionale.

MERGE TARGET - Il target delle operazioni di merge - questi file checkpoint memorizzano le righe di dati consolidate dai file sorgente identificati dalla politica di merge. Una volta installata la fusione, il MERGE TARGET passa allo stato ATTIVO.

IN ATTESA DI TRONCAMENTO DEI LOG - Una volta installata la fusione e il MERGE CFP TARGET fa parte del checkpoint durevole, i file di checkpoint sorgente della fusione passano a questo stato. I file in questo stato sono necessari per la correttezza operativa del database con la tabella ottimizzata per la memoria. Ad esempio, per recuperare da un checkpoint durevole tornando indietro nel tempo.
lower_bound_tsn bigint Limite inferiore della transazione nel file; NULL se lo stato non è in (1, 3).
upper_bound_tsn bigint Limite superiore della transazione nel file; NULL se lo stato non è in (1, 3).
begin_checkpoint_id bigint ID del checkpoint di inizio.
end_checkpoint_id bigint ID del checkpoint finale.
last_updated_checkpoint_id bigint ID dell'ultimo checkpoint che ha aggiornato il file.
encryption_status smallint 0, 1, 2
encryption_status_desc nvarchar(60) 0 => NON CRITTOGRAFATO

1 => CRITTOGRAFATO CON CHIAVE 1

2 => CRITTOGRAFATO CON CHIAVE 2. Valido solo per i file attivi.

Permissions

È richiesta l'autorizzazione VIEW DATABASE STATE per il database.

Autorizzazioni per SQL Server 2022 e versioni successive

Richiede VIEWDATABASE il permesso PERFORMANCE STATE sul database.

Casi d'uso

È possibile stimare lo spazio di archiviazione totale usato da OLTP in memoria come indicato di seguito:

-- total storage used by In-Memory OLTP  
SELECT SUM (file_size_in_bytes)/(1024*1024) as file_size_in_MB  
FROM sys.dm_db_xtp_checkpoint_files;

Per visualizzare una suddivisione dell'utilizzo dello spazio di archiviazione in base allo stato e al tipo di file, eseguire la query seguente:

SELECT state_desc  
 , file_type_desc  
 , COUNT(*) AS [count]  
 , SUM(file_size_in_bytes) / 1024 / 1024 AS [on-disk size MB]   
FROM sys.dm_db_xtp_checkpoint_files  
GROUP BY state, state_desc, file_type, file_type_desc  
ORDER BY state, file_type;