Поделиться через


sys.dm_db_xtp_checkpoint_files (Transact-SQL)

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

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

Примечание.

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

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

SQL Server 2014 (12.x) существенно отличается от более поздних версий и обсуждается в SQL Server 2014.

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

SQL Server 2016 (13.x) и более поздних версий

В следующей таблице описываются столбцы, sys.dm_db_xtp_checkpoint_filesначиная с SQL Server 2016 (13.x).

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

0 для файла DATA.

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

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

3 для БОЛЬШОГО ФАЙЛА ДАННЫХ
file_type_desc 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 TARGET

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

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

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

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

ОЖИДАНИЕ УСЕЧЕНИЯ ЖУРНАЛА. После установки слияния и CFP MERGE TARGET является частью устойчивой контрольной точки, файлы исходных контрольных точек слияния переходируют в это состояние. Файлы в этом состоянии необходимы для правильности работы базы данных с оптимизированной для памяти таблицей. Например, чтобы выполнить восстановление от устойчивой контрольной точки, чтобы вернуться назад во времени.
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 => UNENCRYPTED

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

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

SQL Server 2014 (12.x)

В следующей таблице описываются столбцы для sys.dm_db_xtp_checkpoint_filesSQL Server 2014 (12.x).

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

1 для разностного файла.

NULL Если для столбца состояния задано значение 7.
file_type_desc nvarchar(60) Тип файла: DATA_FILE, DELTA_FILE или NULL если для столбца состояния задано значение 7.
internal_storage_slot int Индекс файла в массиве внутреннего хранилища. NULL Значение столбца состояния не равно 2 или 3.
checkpoint_pair_file_id uniqueidentifier Соответствующий файл данных или разностный файл.
file_size_in_bytes bigint Используемый размер файла. NULL Значение 5, 6 или 7 столбца состояния.
file_size_used_in_bytes bigint Используемый размер файла задействованного файла. NULL Значение 5, 6 или 7 столбца состояния.

Для пар файлов контрольных точек, заполнение которых все еще выполняется, этот столбец будет обновляться после каждой следующей контрольной точки.
inserted_row_count bigint Число строк в файле данных.
deleted_row_count bigint Число удаленных строк в разностном файле.
drop_table_deleted_row_count bigint Количество строк в файле данных, затронутых операцией удаления таблицы. Относится к файлам данных, когда столбец состояния имеет значение 1.

Показывает количество строк, которые удалены из удаленных таблиц. Статистика drop_table_deleted_row_count компилируется после завершения сборки мусора строк удаленных таблиц из памяти и достижения контрольной точки. При перезапуске SQL Server до отображения статистики раскрывающихся таблиц в этом столбце статистика будет обновлена как часть восстановления. В процессе восстановления строки из удаленных таблиц не загружаются. Статистика по удаленным таблицам компилируется на стадии загрузки и отображается в этом столбце по завершении восстановления.
state int 0 — ПРЕДВАРИТЕЛЬНО СОЗДАНО

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

2 — ACTIVE

3. MERGE TARGET

4 — ОБЪЕДИНЕННЫЙ ИСТОЧНИК

5 . ТРЕБУЕТСЯ ДЛЯ РЕЗЕРВНОГО КОПИРОВАНИЯ ИЛИ ВЫСОКОЙ ДОСТУПНОСТИ

6 . ПЕРЕХОД НА TOMBSTONE

7 - TOMBSTONE
state_desc nvarchar(60) PRECREATED — небольшой набор пар данных и разностных файлов, также известных как пары файлов контрольных точек (CFPS), хранятся предварительно, чтобы свести к минимуму или исключить любые ожидания выделения новых файлов по мере выполнения транзакций. Они создаются с размером файла данных размером 128 МБ и разностным размером 8 МБ, но не содержат данных. Число пар файлов соответствует числу логических процессоров или планировщиков (по одному на ядро, без максимального значения), но не менее 8. Это фиксированное пространство хранения в базах данных с таблицами, оптимизированными для памяти.

UNDER CONSTRUCTION — набор cfps, которые хранят только что вставленные и, возможно, удаленные строки данных с момента последней контрольной точки.

ACTIVE — файлы в этом состоянии содержат вставленные и удаленные строки из ближайших предыдущих закрытых контрольных точек. Эти пары файлов содержат все обаятельные вставленные и удаленные строки, которые необходимы, прежде чем будет применена активная часть журнала транзакций после перезапуска базы данных. Размер этих CFPs будет примерно в два раза больше, чем в памяти оптимизированных для памяти таблиц, при условии, что операция слияния является текущей с транзакционной рабочей нагрузкой.

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

MERGE SOURCE — после установки операции слияния исходные CFPs помечаются как MERGE SOURCE. Обратите внимание, что средство оценки политики слияния может определить несколько слияний, но CFP может участвовать только в одной операции слияния.

ТРЕБУЕТСЯ ДЛЯ РЕЗЕРВНОГО КОПИРОВАНИЯ или высокого уровня доступности. После установки слияния и CFP MERGE TARGET является частью устойчивой контрольной точки, исходные CFPS слияния переходили в это состояние. Находящиеся в этом состоянии CFP необходимы для правильности работы базы данных с оптимизированной для памяти таблицы. Например, чтобы выполнить восстановление от устойчивой контрольной точки, чтобы вернуться назад во времени. Пару файлов можно отметить для сборки мусора после того, как точка усечения журнала выходит из диапазона транзакций.

В ПЕРЕХОДЕ НА TOMBSTONE . Эти CFPs не требуются подсистемой OLTP в памяти и могут быть сборщиком мусора. Это состояние указывает, что эти CFP ожидают, чтобы фоновый поток перевел их в следующее состояние, которым является состояние TOMBSTONE.

TOMBSTONE — эти CFPs ожидают, чтобы мусор был собран сборщиком мусора файлового потока. (sp_filestream_force_garbage_collection (Transact-SQL))
lower_bound_tsn bigint Нижняя граница транзакций, содержащихся в файле. NULL Значение столбца состояния не равно 2, 3 или 4.
upper_bound_tsn bigint Верхняя граница транзакций, содержащихся в файле. NULL Значение столбца состояния не равно 2, 3 или 4.
last_backup_page_count int Количество логических страниц, которое определяется при последнем резервном копировании. Применяется, когда столбцу состояния задается значение 2, 3, 4 или 5. NULL Значение , если число страниц не известно.
delta_watermark_tsn int Транзакция последней контрольной точки, которая выполнила запись в этот разностный файл. Это знак разностного файла.
last_checkpoint_recovery_lsn nvarchar(23) Регистрационный номер транзакции в журнале восстановления последней контрольной точки, которой все еще требуется файл.
tombstone_operation_lsn nvarchar(23) Файл будет удален после того, как tombstone_operation_lsn оказывается позади регистрационного номера транзакции в журнале усечения журнала.
logical_deletion_log_block_id bigint Относится только к состоянию 5.

Разрешения

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

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

Требуется разрешение VIEW DATABASE 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;