Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Zeigt Informationen zu Prüfpunktdateien, einschließlich Dateigröße, physischem Speicherort und der Transaktions-ID an.
Hinweis
Beim aktuellen Prüfpunkt, der noch nicht geschlossen wurde, lautet die Zustandsspalte von sys.dm_db_xtp_checkpoint_files für neue Dateien UNDER CONSTRUCTION.Ein Prüfpunkt wird automatisch geschlossen, wenn das Transaktionsprotokoll seit dem letzten Prüfpunkt auf 512 MB angewachsen ist oder wenn Sie den CHECKPOINT-Befehl (CHECKPOINT (Transact-SQL)) ausgeben.
Eine speicheroptimierte Dateigruppe verwendet intern Filestream-Dateien, um eingefügte oder gelöschte Zeilen für speicherinterne Tabellen zu speichern. Es gibt zwei Typen von Dateien. Eine Datendatei enthält eingefügte Zeilen, während eine Änderungsdatei gelöschte Zeilen enthält. Jeder Datendatei wird vorab eine Größe von 128 MB zugeordnet. Sie kann aber größer werden, wenn es eine Transaktion mit langer Ausführungszeit gibt oder wenn durch eine manuelle Zusammenführung eine resultierende Zieldatei von mehr als 128 MB erzwungen wird.
Weitere Informationen finden Sie unter Erstellen und Verwalten von Speicher für speicheroptimierte Objekte.
Gilt für: SQL Server (SQL Server 2014 bis aktuelle Version). |
Spaltenname |
Typ |
Beschreibung |
|---|---|---|
container_id |
int |
Die ID des Containers (in sys.database_files als Datei vom Typ FILESTREAM dargestellt), dem die Daten- oder Änderungsdatei angehört. Joins mit file_id in sys.database_files (Transact-SQL). |
container_guid |
uniqueidentifier |
Die GUID des Containers, dem die Daten- oder Änderungsdatei angehört. |
checkpoint_file_id |
GUID |
Die ID der Daten- oder Änderungsdatei. |
relative_file_path |
nvarchar(256) |
Der Pfad zu der Daten- oder Änderungsdatei relativ zum Speicherort des Containers. |
file_type |
tinyint |
0 für die Datendatei. 1 für die Änderungsdatei. NULL, wenn die Zustandsspalte auf 6 festgelegt ist. |
file_type_desc |
nvarchar(60) |
Dateityp: DATA_FILE, DELTA_FILE oder NULL, wenn die Zustandsspalte auf 6 festgelegt ist. |
internal_storage_slot |
int |
Der Index der Datei im internen Speicherarray. NULL, wenn die Zustandsspalte auf 2 oder 3 festgelegt ist. NULL, wenn ein Prüfpunktdateipaar den Status 1 − UNDER CONSTRUCTION − aufweist. |
checkpoint_pair_file_id |
uniqueidentifier |
Die entsprechende Daten- oder Änderungsdatei. |
file_size_in_bytes |
bigint |
Die Größe der Datei, die verwendet wird. NULL, wenn die Zustandsspalte auf 4, 5 oder 6 festgelegt ist. |
file_size_used_in_bytes |
bigint |
Die verwendete Größe der betreffenden Datei. NULL, wenn die Zustandsspalte auf 4, 5 oder 6 festgelegt ist. Bei Prüfpunktdateipaaren, die noch mit Daten aufgefüllt werden, wird diese Spalte nach dem nächsten Prüfpunkt aktualisiert. |
inserted_row_count |
bigint |
Die Anzahl der Zeilen in der Datendatei. |
deleted_row_count |
bigint |
Die Anzahl der gelöschten Zeilen in der Änderungsdatei. |
drop_table_deleted_row_count |
bigint |
Die Anzahl der Zeilen in den Datendateien, auf die sich die Tabellenlöschung auswirkt. Gilt für Datendateien, wenn die Zustandsspalte gleich 1 ist. Zeigt die Anzahl der aus gelöschten Tabellen gelöschten Zeilen an. Statistiken drop_table_deleted_row_count werden kompiliert, nachdem die Arbeitsspeicher-Garbage Collection für die Zeilen aus gelöschten Tabellen abgeschlossen und ein Prüfpunkt erstellt wurde. Wenn Sie SQL Server neu starten, bevor die Statistiken zu gelöschten Tabellen in dieser Spalte angezeigt werden, werden sie im Rahmen der Wiederherstellung aktualisiert. Bei der Wiederherstellung werden keine Zeilen aus gelöschten Tabellen geladen. Statistiken zu gelöschten Tabellen werden während der Ladephase kompiliert und in dieser Spalte wiedergegeben, sobald die Wiederherstellung abgeschlossen ist. |
state |
int |
0 – PRECREATED 1 – UNDER CONSTRUCTION 2 - ACTIVE 3 – MERGE TARGET 4 – MERGED SOURCE 5 – REQUIRED FOR BACKUP/HA 6 – IN TRANSITION TO TOMBSTONE 7 – TOMBSTONE |
state_desc |
nvarchar(60) |
|
lower_bound_tsn |
bigint |
Die untere Grenze für Transaktionen, die in der Datei enthalten sind. NULL, wenn die Zustandsspalte ungleich 1 ist. |
upper_bound_tsn |
bigint |
Die obere Grenze für Transaktionen, die in der Datei enthalten sind. NULL, wenn die Zustandsspalte ungleich 1 ist. |
last_backup_page_count |
int |
Die logische Seitenanzahl, die bei der letzten Sicherung bestimmt wird. Diese gilt, wenn die Zustandsspalte auf 0, 1 oder 2 festgelegt ist. NULL, wenn die Seitenanzahl unbekannt ist. |
delta_watermark_tsn |
int |
Die Transaktion des letzten Prüfpunkts, von dem in diese Änderungsdatei geschrieben wurde. Dies ist das Wasserzeichen der Änderungsdatei. |
last_checkpoint_recovery_lsn |
nvarchar(23) |
Die Wiederherstellungs-Protokollfolgenummer des letzten Prüfpunkts, von dem die Datei noch benötigt wird. |
tombstone_operation_lsn |
nvarchar(23) |
Die Datei wird gelöscht, sobald tombstone_operation_lsn hinter der Protokollfolgenummer des Protokollkürzungspunkts zurückfällt. |
logical_deletion_log_block_id |
bigint |
NULL, sofern die Zustandsspalte nicht 6 ist. |
Berechtigungen
Erfordert die VIEW DATABASE STATE-Berechtigung auf dem Server.
Anwendungsfälle
Sie können den Speicherplatz, der von speicherinternen Tabellen verwendet wird, wie folgt schätzen:
-- total storage used by in-memory tables
select sum (file_size_in_bytes)/(1024*1024) as file_size_in_MB
from sys.dm_db_xtp_checkpoint_files
where internal_storage_slot is not NULL
Sie können den freien Speicherplatz in jeder Datei mit der folgenden Abfrage schätzen.
Beachten Sie die Spalte percent_full. In-Memory OLTP verwendet eine Heuristik, um die letzte Transaktion für die Datendatei zu identifizieren. Je nach der Anzahl der Zeilen, die durch die Transaktion geändert wird, kann sich percent_full unterscheiden. Der belegte Platz einer Datendatei kann auch beeinflusst werden, wenn ein Prüfpunkt ausgeführt wurde, der zur Schließung der Datei geführt hat. Sie sehen möglicherweise auch eine Datendatei ohne Zeilen. Dies kann durch einen manuellen Prüfpunkt verursacht werden, nachdem Zeilen gelöscht und bevor andere Zeilen hinzugefügt wurden.
select *,
str((convert
(float, (file_size_used_in_bytes * (1 - convert (float, deleted_rows)/inserted_rows)))/file_size_in_bytes),
25, 2) as percent_full
from
(
select t.internal_storage_slot, file_size_in_bytes, file_size_used_in_bytes,
(case when inserted_row_count= 0 then 1
when inserted_row_count > 0 then inserted_row_count end) as inserted_rows,
(select deleted_row_count
from sys.dm_db_xtp_checkpoint_files
where internal_storage_slot = t.internal_storage_slot and file_type=1) as deleted_rows
from sys.dm_db_xtp_checkpoint_files as t
where internal_storage_slot is not NULL and file_type=0) as t_t
order by internal_storage_slot
SQL Server unterstützt bis zu 8.192 Daten- und Änderungsdateipaare. Zum Anzeigen der Anzahl der aktiven Daten- und Änderungsdateipaare verwenden Sie die folgende Abfrage.
-- total number of data and delta file pairs
select count (*)
from sys.dm_db_xtp_checkpoint_files
where internal_storage_slot is not NULL and file_type = 0
So schätzen Sie, wie viel % des gesamten Speicherplatzes genutzt wird:
declare @deleted_row_count int;
declare @inserted_row_count int;
declare @effective_row_percentage float
-- get the total deleted row counts by looking at active delta files
select @deleted_row_count = SUM (deleted_row_count)
from sys.dm_db_xtp_checkpoint_files
where state = 2 and file_type = 1
-- get total inserted row count by looking at active data files
select @inserted_row_count = SUM (inserted_row_count)
from sys.dm_db_xtp_checkpoint_files
where state = 2 and file_type = 0
-- get the effective % of active rows after accounting for the deleted rows
-- This number represents the potential space that can be freed up if deleted are removed from storage
select @effective_row_percentage = (1 - convert (float, @deleted_row_count)/@inserted_row_count)
-- Compute the effective usage fill factor for the storage.
-- Effective fill factor computes the effective free space in data files
-- on average after accounting for the deleted rows
-- This should be >= 50% otherwise it is an indication that auto-merge is not keeping up
select
str (convert (varchar(100), ((SUM (file_size_used_in_bytes)*@effective_row_percentage)/SUM (file_size_in_bytes)) *100 ),5, 2)
as [storage usage fill factor]
from sys.dm_db_xtp_checkpoint_files
where state = 2 and file_type = 0
Siehe auch
Konzepte
Dynamische Verwaltungssichten für speicheroptimierte Tabellen (Transact-SQL)