Condividi tramite


sys.dm_db_xtp_checkpoint_files (Transact-SQL)

Si applica a: SQL Server Database SQL di Azure 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.

Nota

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.

SQL Server 2014 (12.x) è sostanzialmente diverso dalle versioni più recenti ed è descritto in SQL Server 2014.

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

SQL Server 2016 (13.x) e versioni successive

La tabella seguente descrive le colonne per sys.dm_db_xtp_checkpoint_files, a partire da SQL Server 2016 (13.x).

Nome colonna Tipo Descrizione
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
file_type_desc 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.
state smallint 0 - PRECREATED

1 - IN COSTRUZIONE

2 - ACTIVE

3 - UNIONE DESTINAZIONE

8 - IN ATTESA DEL TRONCAMENTO DEL LOG
state_desc 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 : destinazione delle operazioni di unione: questi file di checkpoint archiviano le righe di dati consolidate dai file di origine identificati dai criteri di unione. Una volta installata l'operazione di unione, lo stato di MERGE TARGET diventa ACTIVE.

WAITING FOR LOG TRUNCATION : dopo l'installazione dell'unione e il CFP MERGE TARGET fa parte di un checkpoint durevole, i file del checkpoint di origine di merge 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.

SQL Server 2014 (12.x)

Nella tabella seguente vengono descritte le colonne per , per SQL Server 2014 (12.x).The following table describes the columns for sys.dm_db_xtp_checkpoint_files, for SQL Server 2014 (12.x).

Nome colonna Tipo Descrizione
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 il file di dati o il file differenziale.
checkpoint_file_id GUID ID del file di dati o differenziale.
relative_file_path nvarchar(256) Percorso del file di dati o differenziale, relativo al percorso del contenitore.
file_type tinyint 0 per il file di dati.

1 per il file differenziale.

NULL se la colonna di stato è impostata su 7.
file_type_desc nvarchar(60) Tipo di file: DATA_FILE, DELTA_FILE o NULL se la colonna di stato è impostata su 7.
internal_storage_slot int Indice del file nella matrice di archiviazione interna. NULL se la colonna di stato non è 2 o 3.
checkpoint_pair_file_id uniqueidentifier File di dati o differenziale corrispondente.
file_size_in_bytes bigint Dimensioni del file in uso. NULL se la colonna di stato è impostata su 5, 6 o 7.
file_size_used_in_bytes bigint Dimensioni utilizzate del file in uso. NULL se la colonna di stato è impostata su 5, 6 o 7.

Per le coppie di file del checkpoint ancora da popolare, questa colonna verrà aggiornata dopo il checkpoint successivo.
inserted_row_count bigint Numero di righe del file di dati.
deleted_row_count bigint Numero di righe eliminate del file differenziale.
drop_table_deleted_row_count bigint Numero di righe nei file di dati interessati dall'eliminazione di una tabella. Si applica ai file di dati quando la colonna contenente gli stati è uguale a 1.

Mostra i conteggi delle righe eliminate dalle tabelle eliminate. Le statistiche drop_table_deleted_row_count vengono compilate dopo il completamento del Garbage Collection in memoria delle righe delle tabelle eliminate e l'esecuzione di un checkpoint. Se si riavvia SQL Server prima che le statistiche delle tabelle di rilascio vengano riflesse in questa colonna, le statistiche verranno aggiornate come parte del ripristino. Il processo di recupero non carica le righe delle tabelle eliminate. Le statistiche delle tabelle eliminate vengono compilate durante la fase di caricamento e riportate nella colonna al termine del recupero.
state int 0 - PRECREATED

1 - IN COSTRUZIONE

2 - ACTIVE

3 - UNIONE DESTINAZIONE

4 - ORIGINE UNITA

5 - OBBLIGATORIO PER IL BACKUP/DISPONIBILITÀ ELEVATA

6 - IN TRANSIZIONE A TOMBSTONE

7 - TOMBSTONE
state_desc nvarchar(60) PRECREATED: un piccolo set di coppie di file di dati e differenziali, note anche come coppie di file di checkpoint (CFP) vengono mantenute preallocate per ridurre al minimo o eliminare eventuali attese per allocare nuovi file durante l'esecuzione delle transazioni. Vengono creati con dimensioni del file di dati di 128 MB e file differenziali di 8 MB, ma non contengono dati. Il numero di coppie di file di checkpoint è calcolato in base al numero di processori logici o utilità di pianificazione (uno per core, senza limiti) con un minimo di 8. Si tratta di un overhead di archiviazione fisso nei database con tabelle ottimizzate per la memoria.

IN COSTRUZIONE - Set di file di file di checkpoint che archivia le righe di dati appena inserite ed eventualmente eliminate dopo l'ultimo checkpoint.

ACTIVE: contengono le righe inserite ed eliminate dai precedenti checkpoint chiusi. Queste coppie di file di checkpoint contengono tutte le righe inserite ed eliminate richieste prima dell'applicazione della parte attiva del log delle transazioni al riavvio del database. Le dimensioni di questi file di file di cluster di controllo saranno circa due volte le dimensioni in memoria delle tabelle ottimizzate per la memoria, presupponendo che l'operazione di unione sia corrente con il carico di lavoro transazionale.

MERGE TARGET: la CFP archivia le righe di dati consolidate dei CFP identificate dai criteri di unione. Una volta installata l'operazione di unione, lo stato di MERGE TARGET diventa ACTIVE.

MERGE SOURCE: dopo l'installazione dell'operazione di merge, i FILE di origine vengono contrassegnati come MERGE SOURCE. Si noti che l'analizzatore di criteri di unione potrebbe identificare più unioni, ma un CFP può partecipare solo a un'operazione di merge.

OBBLIGATORIO PER BACKUP/DISPONIBILITÀ elevata: dopo l'installazione dell'unione e il CFP MERGE TARGET fa parte di un checkpoint durevole, i file di file di failover di origine di merge vengono trasferiti in questo stato. Le coppie di file di checkpoint in questo stato sono necessarie per la correttezza operativa del database in cui sia inclusa una tabella ottimizzata per la memoria. Ad esempio, per recuperare da un checkpoint durevole tornando indietro nel tempo. Una coppia di file di checkpoint può essere contrassegnata per il processo di Garbage Collection quando il punto di troncamento del log va oltre l'intervallo di transazioni.

IN TRANSIZIONE A TOMBSTONE: questi CFP non sono necessari per il motore OLTP in memoria e possono essere sottoposto a Garbage Collection. Questo stato indica che le coppie di file di checkpoint sono in attesa del thread in background per passare allo stato successivo, ovvero allo stato TOMBSTONE.

TOMBSTONE: questi file di file cfp sono in attesa di garbage collection da parte del Garbage Collector filestream. (sp_filestream_force_garbage_collection (Transact-SQL))
lower_bound_tsn bigint Limite inferiore delle transazioni incluse nel file. NULL se la colonna di stato è diversa da 2, 3 o 4.
upper_bound_tsn bigint Limite superiore delle transazioni incluse nel file. NULL se la colonna di stato è diversa da 2, 3 o 4.
last_backup_page_count int Conteggio delle pagine logiche determinato nell'ultimo backup. Si applica quando la colonna contenente gli stati è impostata su 2, 3, 4 o 5. NULL se il numero di pagine non è noto.
delta_watermark_tsn int Transazione dell'ultimo checkpoint che ha scritto in questo file differenziale. Si tratta della filigrana per il file differenziale.
last_checkpoint_recovery_lsn nvarchar(23) Numero di sequenza del file di log (LSN) di recupero dell'ultimo checkpoint per cui è ancora richiesto il file.
tombstone_operation_lsn nvarchar(23) Il file verrà eliminato una volta che tombstone_operation_lsn non è più sincronizzato con l'LSN di troncamento del log.
logical_deletion_log_block_id bigint Si applica solo alla stato 5.

Autorizzazioni

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

Autorizzazioni per SQL Server 2022 e versioni successive

È richiesta l'autorizzazione VIEW DATABASE PERFORMANCE STATE per il 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;