Udostępnij za pomocą


sys.dm_db_xtp_checkpoint_files (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Wyświetla informacje o In-Memory plikach punktów kontrolnych OLTP, w tym rozmiar pliku, lokalizację fizyczną oraz identyfikator transakcji.

Uwaga / Notatka

Dla bieżącego punktu kontrolnego, który nie został zamknięty, kolumna stanu będzie sys.dm_db_xtp_checkpoint_files W BUDOWIE dla nowych plików. Punkt kontrolny zamyka się automatycznie, gdy od ostatniego punktu kontrolnego nastąpił wystarczający wzrost dziennika transakcji lub gdy wydasz CHECKPOINT polecenie. Aby uzyskać więcej informacji, zobacz CHECKPOINT (Transact-SQL).

Grupa plików zoptymalizowana pod pamięć wewnętrznie używa plików tylko z dodawaniem do przechowywania wstawionych i usuniętych wierszy dla tabel w pamięci. Istnieją dwa rodzaje plików. Plik danych zawiera wstawione wiersze, natomiast plik delta zawiera odwołania do usuniętych wierszy.

SQL Server 2014 (12.x) znacznie różni się od nowszych wersji i jest omawiany w SQL Server 2014.

Więcej informacji można znaleźć w artykule Tworzenie i zarządzanie pamięcią masową dla obiektów Memory-Optimized.

SQL Server 2016 (13.x) i późniejsze

Poniższa tabela opisuje kolumny dla sys.dm_db_xtp_checkpoint_files, zaczynając od SQL Server 2016 (13.x).

Nazwa kolumny Typ Description
container_id int ID kontenera (reprezentowanego jako plik o typie FILESTREAM w ), sys.database_filesktórego jest częścią pliku danych lub delta. Łączy się z file_idsys.database_files (Transact-SQL).
container_guid uniqueidentifier GUID kontenera, którego częścią jest plik root, data lub delta. Dołącza do stołu file_guidsys.database_files .
checkpoint_file_id uniqueidentifier GUID pliku checkpoint.
relative_file_path nvarchar(256) Ścieżka pliku względem kontenera, na który jest mapowany.
file_type smallint -1 za DARMO

0 dla pliku DATA.

1 dla pliku DELTA.

2 dla pliku ROOT

3 dla pliku LARGE DATA
opis_typu_pliku nvarchar(60) ZA DARMO – Wszystkie pliki utrzymywane jako DARMOWE są dostępne do alokacji. Darmowe pliki mogą się różnić rozmiarem w zależności od przewidywanych potrzeb systemu. Maksymalny rozmiar to 1 GB.

DATA - Pliki danych zawierają wiersze wstawione do tabel zoptymalizowanych pod pamięć.

DELTA - Pliki Delta zawierają odwołania do wierszy w plikach danych, które zostały usunięte.

ROOT - Pliki root zawierają metadane systemowe dla obiektów zoptymalizowanych pod pamięć i natywnie skompilowanych.

DUŻE DANE - Duże pliki danych zawierają wartości wstawione w kolumnach (n)varchar(max) i varbinary(max), a także segmenty kolumn będące częścią indeksów magazynu kolumn w tabelach zoptymalizowanych pod pamięć.
internal_storage_slot int Indeks pliku w wewnętrznej tablicy pamięci. NULL dla ROOT lub dla stanu innego niż 1.
checkpoint_pair_file_id uniqueidentifier Odpowiadający plik DATA lub DELTA. NULL dla ROOT.
file_size_in_bytes bigint Rozmiar pliku na dysku.
file_size_used_in_bytes bigint Dla par plików punktów kontrolnych, które są nadal wypełniane, ta kolumna zostanie zaktualizowana po kolejnym punkcie kontrolnym.
logical_row_count bigint Dla danych liczba wstawionych wierszy.

Dla Delty liczba wierszy usuniętych po uwzględnieniu tabeli dropów.

Dla Root, NULL.
stan smallint 0 - PRECREATED

1 - W BUDOWIE

2 - AKTYWNA

3 - CEL POŁĄCZENIA

8 - OCZEKIWANIE NA OBCIĘCIE LOGARYTMU
opis_stanu nvarchar(60) PRECREATED - Wstępnie przydziela się kilka plików punktów kontrolnych, aby zminimalizować lub wyeliminować oczekiwania na alokację nowych plików podczas wykonywania transakcji. Pliki te mogą się różnić rozmiarem i są tworzone w zależności od szacowanych potrzeb obciążenia. Nie zawierają żadnych danych. Jest to narzut pamięci masowej w bazach danych z grupą MEMORY_OPTIMIZED_DATA.

W BUDOWIE – Te pliki punktów kontrolnych są w trakcie budowy, co oznacza, że są wypełniane na podstawie rekordów logów generowanych przez bazę danych i nie są jeszcze częścią punktu kontrolnego.

AKTYWNE – Zawierają one wstawione/usunięte wiersze z poprzednich zamkniętych punktów kontrolnych. Zawierają zawartość tabel, które są odczytywane do pamięci przed zastosowaniem aktywnej części dziennika transakcyjnego podczas restartu bazy danych. Spodziewamy się, że rozmiar tych plików checkpointów będzie około 2x większy niż rozmiar tabel zoptymalizowanych pamięcią w pamięci, zakładając, że operacja scalania nadąża za obciążeniem transakcyjnym.

CEL MERGE – Cel operacji scalania – te pliki checkpointów przechowują skonsolidowane wiersze danych z plików źródłowych, które zostały zidentyfikowane przez politykę merge. Po zainstalowaniu merge MERGE TARGET przechodzi w stan AKTYWNY.

OCZEKIWANIE NA OBCIĘCIE LOGÓW - Po zainstalowaniu merge i stanie się CELOWYM MERGE CFP częścią trwałego punktu kontrolnego, pliki punktu kontrolnego merge przechodzą do tego stanu. Pliki w tym stanie są potrzebne dla poprawności operacyjnej bazy danych z tabelą zoptymalizowaną pod pamięć. Na przykład, by odzyskać czas po trwałym punkcie kontrolnym, by cofnąć się w czasie.
lower_bound_tsn bigint Dolna granica transakcji w pliku; NULL jeśli nie należy do (1, 3).
upper_bound_tsn bigint Górna granica transakcji w pliku; NULL jeśli nie należy do (1, 3).
begin_checkpoint_id bigint Identyfikacja punktu kontrolnego start.
end_checkpoint_id bigint Identyfikacja końcowego punktu kontrolnego.
last_updated_checkpoint_id bigint Identyfikacja ostatniego punktu kontrolnego, który zaktualizował ten plik.
encryption_status smallint 0, 1, 2
encryption_status_desc nvarchar(60) 0 => NIESZYFROWANE

1 => ZASZYFROWANE KLUCZEM 1

2 => ZASZYFROWANE KLUCZEM 2. Dotyczy tylko aktywnych plików.

SQL Server 2014 (12.x)

Poniższa tabela opisuje kolumny dla sys.dm_db_xtp_checkpoint_files, dla SQL Server 2014 (12.x).

Nazwa kolumny Typ Description
container_id int ID kontenera (reprezentowanego jako plik o typie FILESTREAM w ), sys.database_filesktórego jest częścią pliku danych lub delta. Łączy się z file_idsys.database_files (Transact-SQL).
container_guid uniqueidentifier GUID kontenera, którego częścią jest plik danych lub delta.
checkpoint_file_id identyfikator GUID ID pliku danych lub delta.
relative_file_path nvarchar(256) Ścieżka do pliku danych lub delta, względem lokalizacji kontenera.
file_type tinyint 0 dla pliku danych.

1 dla pliku delta.

NULL jeśli kolumna stanu jest ustawiona na 7.
opis_typu_pliku nvarchar(60) Typ pliku: DATA_FILE, DELTA_FILE lub NULL jeśli kolumna stanu jest ustawiona na 7.
internal_storage_slot int Indeks pliku w wewnętrznej tablicy pamięci. NULL jeśli kolumna stanu nie jest 2 lub 3.
checkpoint_pair_file_id uniqueidentifier Odpowiadający plik danych lub delta.
file_size_in_bytes bigint Rozmiar używanego pliku. NULL jeśli kolumna stanu jest ustawiona na 5, 6 lub 7.
file_size_used_in_bytes bigint Używany rozmiar użytego pliku. NULL jeśli kolumna stanu jest ustawiona na 5, 6 lub 7.

Dla par plików punktów kontrolnych, które są nadal wypełniane, ta kolumna zostanie zaktualizowana po kolejnym punkcie kontrolnym.
inserted_row_count bigint Liczba wierszy w pliku danych.
deleted_row_count bigint Liczba usuniętych wierszy w pliku delta.
drop_table_deleted_row_count bigint Liczba wierszy w plikach danych dotkniętych przez tabelę dropów. Dotyczy plików danych, gdy kolumna stanu równa się 1.

Pokazuje liczbę usuniętych wierszy z porzuconych tabel. Statystyki drop_table_deleted_row_count są kompilowane po zakończeniu zbierania śmieci wierszy z porzuconych tabel i po wykonaniu punktu kontrolnego. Jeśli zrestartujesz SQL Server przed pojawieniem się statystyk tabel dropów w tej kolumnie, statystyki zostaną zaktualizowane w ramach odzyskiwania. Proces odzyskiwania nie ładuje wierszy z porzuconych tabel. Statystyki dotyczące porzuconych tabel są kompilowane podczas fazy ładowania i raportowane w tej kolumnie po zakończeniu odzyskiwania.
stan int 0 - PRECREATED

1 - W BUDOWIE

2 - AKTYWNA

3 - CEL POŁĄCZENIA

4 - POŁĄCZONE ŹRÓDŁO

5 - WYMAGANE DO BACKUPU/HA

6 - W PRZEJŚCIU DO NAGROBKA

7 - NAGROBEK
opis_stanu nvarchar(60) PRECREATED – Mały zestaw par plików danych i delta, znanych również jako pary plików checkpoint (CFP), jest przechowywany w prealokacji, aby zminimalizować lub wyeliminować oczekiwania na alokację nowych plików podczas wykonywania transakcji. Są tworzone z rozmiarem pliku danych 128 MB i rozmiarem delta 8 MB, ale nie zawierają danych. Liczba CFP obliczana jest jako liczba procesorów logicznych lub planistów (jeden na rdzeń, bez maksymalnej), z minimalną liczbą 8. Jest to stały narzut pamięci masowej w bazach danych z tabelami zoptymalizowanymi pod pamięć.

W BUDOWIE – Zestaw CFP, które przechowują nowo włożone i ewentualnie usunięte wiersze danych od ostatniego punktu kontrolnego.

AKTYWNE - Zawierają one wstawione i usunięte wiersze z poprzednich zamkniętych punktów kontrolnych. Te CFP zawierają wszystkie wymagane wstawione i usunięte wiersze wymagane przed zastosowaniem aktywnej części dziennika transakcji przy wznowieniu bazy danych. Rozmiar tych CFP będzie około dwukrotności wielkości tabel zoptymalizowanych pamięciowo, zakładając, że operacja scalania jest aktualna z obciążeniem transakcyjnym.

CEL SCALANIA – CFP przechowuje skonsolidowane wiersze danych z CFP(ów), które zostały zidentyfikowane przez politykę scalania. Po zainstalowaniu merge MERGE TARGET przechodzi w stan AKTYWNY.

MERGED SOURCE - Po zainstalowaniu operacji merge, źródłowe CFP są oznaczane jako MERGED SOURCE. Należy zauważyć, że ewaluator polityki łączenia może zidentyfikować wiele fuzji, ale CFP może uczestniczyć tylko w jednej operacji połączenia.

WYMAGANE DO BACKUP/HA - Po zainstalowaniu merge i MERGE TARGET CFP jako części trwałego punktu kontrolnego, CFP source merge przechodzą do tego stanu. CFP w tym stanie są potrzebne dla poprawności operacyjnej bazy danych z tabelą zoptymalizowaną pod pamięć. Na przykład, by odzyskać czas po trwałym punkcie kontrolnym, by cofnąć się w czasie. CFP może być oznaczony do garbage collection, gdy punkt logarytmu obcięcia przekroczy swój zakres transakcji.

W PRZEJŚCIU DO TOMBSTONE – Te CFP nie są potrzebne silnikowi OLTP In-Memory i mogą być odrzucane do śmieci. Ten stan wskazuje, że te CFP czekają na wątek tła, który przeniesie je do następnego stanu, którym jest TOMBSTONE.

TOMBSTONE – Te CFP czekają na odnalezienie śmieci przez zbieracz odpadów w strumieniu plików. (sp_filestream_force_garbage_collection (Transact-SQL))
lower_bound_tsn bigint Dolna granica transakcji zawartych w pliku. NULL jeśli kolumna stanu jest inna niż 2, 3 lub 4.
upper_bound_tsn bigint Górna granica transakcji zawartych w pliku. NULL jeśli kolumna stanu jest inna niż 2, 3 lub 4.
last_backup_page_count int Logiczna liczba stron ustalana jest przy ostatniej kopii zapasowej. Dotyczy wtedy, gdy kolumna stanu jest ustawiona na 2, 3, 4 lub 5. NULL jeśli liczba stron nie jest znana.
delta_watermark_tsn int Transakcja ostatniego punktu kontrolnego, który zapisał się do tego pliku delta. To jest znak wodny pliku delta.
last_checkpoint_recovery_lsn nvarchar(23) Sekwencja rejestru rejestru odzyskiwania ostatniego punktu kontrolnego, który nadal potrzebuje pliku.
tombstone_operation_lsn nvarchar(23) Plik zostanie usunięty, gdy tombstone_operation_lsn będzie za numerem sekwencji logarytmu skracania.
logical_deletion_log_block_id bigint Dotyczy tylko stanu 5.

Permissions

Wymaga uprawnienia VIEW DATABASE STATE do bazy danych.

Uprawnienia dla programu SQL Server 2022 i nowszych

Wymaga uprawnienia WYŚWIETL STAN WYDAJNOŚCI BAZY DANYCH dla bazy danych.

Przypadki użycia

Możesz oszacować całkowitą ilość pamięci zużytej przez In-Memory OLTP następująco:

-- 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;

Aby zobaczyć podział wykorzystania pamięci według stanu i typu pliku, uruchom następujące zapytanie:

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;