sys.dm_db_xtp_checkpoint_files (Transact-SQL)

Область применения:SQL ServerБаза данных SQL AzureУправляемый экземпляр SQL Azure

Отображает сведения о файлах контрольных точек OLTP в памяти, включая размер файла, физическое расположение и идентификатор транзакции.

Note

Для текущей контрольной точки, которая не закрыта, столбец sys.dm_db_xtp_checkpoint_files состояния будет иметь значение UNDER CONSTRUCTION для новых файлов. Контрольная точка закрывается автоматически при достаточном росте журнала транзакций с момента последнего контрольного пункта или при выполнении CHECKPOINT команды. Дополнительные сведения см. в разделе КОНТРОЛЬНАЯ ТОЧКА (Transact-SQL).

Оптимизированная для памяти группа файлов внутренне использует файлы, оптимизированные только для добавления, для хранения вставленных и удаленных строк для таблиц в памяти. Существует два типа файлов. Файл данных содержит вставленные строки, а разностный файл содержит ссылки на удаленные строки.

Дополнительные сведения см. в статье "Создание и управление хранилищем для оптимизированных для памяти объектов".

Название столбца Тип Описание
container_id int Идентификатор контейнера (представленный в виде файла с типом FILESTREAM в sys.database_files) о том, что данные или разностные файлы являются частью. Присоединяется к file_id sys.database_files (Transact-SQL).
container_guid uniqueidentifier GUID контейнера, в который входит корневой файл, данные или разностный файл. Присоединяется к file_guidsys.database_files таблице.
checkpoint_file_id uniqueidentifier GUID файла контрольной точки.
relative_file_path nvarchar(256) Путь к файлу относительно контейнера, с которому он сопоставлен.
file_type smallint -1 бесплатно

0 для файла DATA.

1 для DELTA-файла.

2 для КОРНЕВОго файла

3 для БОЛЬШОГО ФАЙЛА ДАННЫХ
описание типа файла nvarchar(60) FREE- Все файлы, поддерживаемые как БЕСПЛАТНЫЕ, доступны для выделения. Бесплатные файлы могут различаться в зависимости от ожидаемых потребностей системы. Максимальный размер — 1 ГБ.

DATA — файлы данных содержат строки, вставляемые в оптимизированные для памяти таблицы.

DELTA - Разностные файлы содержат ссылки на строки в файлах данных, которые были удалены.

ROOT — корневые файлы содержат системные метаданные для оптимизированных для памяти и скомпилированных в собственном коде объектов.

LARGE DATA — большие файлы данных содержат значения, вставляемые в столбцы (n)varchar(max) и varbinary(max), а также сегменты столбцов, которые являются частью индексов columnstore в таблицах, оптимизированных для памяти.
internal_storage_slot int Индекс файла в массиве внутреннего хранилища. NULL для root или для состояния, отличного от 1.
checkpoint_pair_file_id uniqueidentifier Соответствующий файл DATA или DELTA. NULL для ROOT.
file_size_in_bytes bigint Размер файла на диске.
file_size_used_in_bytes bigint Для пар файлов контрольных точек, заполнение которых все еще выполняется, этот столбец будет обновляться после каждой следующей контрольной точки.
logical_row_count bigint Для данных число вставленных строк.

Для Delta число строк, удаленных после учета раскрываемой таблицы.

Для root, NULL.
state smallint 0 — ПРЕДВАРИТЕЛЬНО СОЗДАНО

1 - ПОД СТРОИТЕЛЬСТВОМ

2 — ACTIVE

3 - MERGE ЦЕЛЬ

8. ОЖИДАНИЕ УСЕЧЕНИЯ ЖУРНАЛА
описание состояния nvarchar(60) PRECREATED — несколько файлов контрольных точек предварительно выделены, чтобы свести к минимуму или исключить любые ожидания выделения новых файлов по мере выполнения транзакций. Эти файлы могут отличаться по размеру и создаются в зависимости от предполагаемых потребностей рабочей нагрузки. Они не содержат данных. Это затраты на хранение в базах данных с MEMORY_OPTIMIZED_DATA файловой группой.

UNDER CONSTRUCTION . Эти файлы контрольных точек находятся в стадии создания, то есть заполняются на основе записей журнала, созданных базой данных, и еще не являются частью контрольной точки.

ACTIVE — они содержат вставленные или удаленные строки из предыдущих закрытых контрольных точек. Они содержат содержимое таблиц, которые считываются в память перед применением активной части журнала транзакций при перезапуске базы данных. Мы ожидаем, что размер этих файлов контрольных точек составляет примерно 2x от размера оптимизированных для памяти таблиц, предполагая, что операция слияния выполняется в соответствии с транзакционной рабочей нагрузкой.

MERGE TARGET — цель операций слияния — эти файлы контрольных точек хранят консолидированные строки данных из исходных файлов, которые были идентифицированы политикой слияния. После установки MERGE слияния TARGET переходит в состояние ACTIVE.

ОЖИДАНИЕ УСЕЧЕНИЯ ЖУРНАЛА — После установки слияния и включения MERGE TARGET CFP в состав прочной контрольной точки, исходные файлы контрольной точки слияния переходят в это состояние. Файлы в этом состоянии необходимы для правильности работы базы данных с оптимизированной для памяти таблицей. Например, чтобы выполнить восстановление от устойчивой контрольной точки, чтобы вернуться назад во времени.
lower_bound_tsn bigint Нижняя граница транзакции в файле; NULL Значение , если состояние не в (1, 3).
upper_bound_tsn bigint Верхняя граница транзакции в файле; NULL Значение , если состояние не в (1, 3).
begin_checkpoint_id bigint Идентификатор начальной контрольной точки.
end_checkpoint_id bigint Идентификатор конечной контрольной точки.
last_updated_checkpoint_id bigint Идентификатор последней контрольной точки, которая обновила этот файл.
encryption_status smallint 0, 1, 2
encryption_status_desc nvarchar(60) 0 => НЕ ЗАШИФРОВАНО

1 => ЗАШИФРОВАНО С ПОМОЩЬЮ КЛЮЧА 1

2 => ЗАШИФРОВАНО С КЛЮЧОМ 2. Допустимо только для активных файлов.

Permissions

Необходимо разрешение VIEW DATABASE STATE на базу данных.

Разрешения для SQL Server 2022 и более поздних версий

Требуется VIEWDATABASE разрешение PERFORMANCE STATE в базе данных.

Варианты использования

Общее хранилище, используемое в памяти OLTP, можно оценить следующим образом:

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

Чтобы просмотреть разбивку использования хранилища по состоянию и типу файла, выполните следующий запрос:

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;