sys.dm_db_xtp_checkpoint_files (Transact-SQL)
Отображает сведения о файлах контрольных точек, включая размер файла, физическое местоположение и идентификатор транзакции.
Примечание
Для текущей незакрытой контрольной точки state sys.dm_db_xtp_checkpoint_files будет находиться в состоянии UNDER CONSTRUCTION для новых файлов.Контрольная точка закрывается автоматически в случае, если журнал транзакций увеличивается до 512 МБ с момента создания последней контрольной точки, или при использовании команды CHECKPOINT (CHECKPOINT (Transact-SQL)).
Оптимизированная для памяти файловая группа использует файлы FILESTREAM для хранения вставленных и удаленных строк таблиц, находящихся в памяти. Существует два типа файлов. Файл данных содержит вставленные строки, а разностный файл содержит удаленные строки. Для каждого файла данных предварительно задается размер 128 МБ, но он может стать больше, если транзакция выполняется очень долго либо когда производится слияние вручную и итоговый размер файла становится больше 128 МБ.
Дополнительные сведения см. в разделе Создание и управление хранилищем для оптимизированных для памяти объектов.
Применимо для следующих объектов: SQL Server (начиная с SQL Server 2014 до текущей версии). |
Имя столбца |
Тип |
Описание |
---|---|---|
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, если столбцу состояния задано значение 6. |
file_type_desc |
nvarchar(60) |
Тип файла: DATA_FILE, DELTA_FILE или значение NULL, если столбцу состояния задано значение 6. |
internal_storage_slot |
int |
Индекс файла в массиве внутреннего хранилища. Значение NULL, если столбцу состояния задано значение 2 или 3. NULL, если пара файлов контрольных точек находится в состоянии 1 — UNDER CONSTRUCTION. |
checkpoint_pair_file_id |
uniqueidentifier |
Соответствующий файл данных или разностный файл. |
file_size_in_bytes |
bigint |
Используемый размер файла. Значение NULL, если столбцу состояния задано значение 4, 5 или 6. |
file_size_used_in_bytes |
bigint |
Используемый размер файла задействованного файла. Значение NULL, если столбцу состояния задано значение 4, 5 или 6. Для пар файлов контрольных точек, заполнение которых все еще выполняется, этот столбец будет обновляться после каждой следующей контрольной точки. |
inserted_row_count |
bigint |
Число строк в файле данных. |
deleted_row_count |
bigint |
Число удаленных строк в разностном файле. |
drop_table_deleted_row_count |
bigint |
Количество строк в файле данных, затронутых операцией удаления таблицы. Относится к файлам данных, когда столбец состояния имеет значение 1. Показывает количество строк, которые удалены из удаленных таблиц. Статистика drop_table_deleted_row_count компилируется после завершения сборки мусора строк удаленных таблиц из памяти и достижения контрольной точки. Если перезапустить SQL Server до того, как статистика удаленных таблиц появится в этом столбце, статистика будет обновлена в рамках восстановления. В процессе восстановления строки из удаленных таблиц не загружаются. Статистика по удаленным таблицам компилируется на стадии загрузки и отображается в этом столбце по завершении восстановления. |
состояние |
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 |
Нижняя граница транзакций, содержащихся в файле. Значение NULL, если столбец состояния имеет значение, отличное от 1. |
upper_bound_tsn |
bigint |
Верхняя граница транзакций, содержащихся в файле. Значение NULL, если столбец состояния имеет значение, отличное от 1. |
last_backup_page_count |
int |
Количество логических страниц, которое определяется при последнем резервном копировании. Применяется, когда столбцу состояния задается значение 0, 1 или 2. Значение 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 |
Значение NULL, если только столбец состояния не имеет значение 6. |
Разрешения
Требуется разрешение VIEW DATABASE STATE на сервере.
Способы применения
Можно оценить объем хранилища, используемый таблицами в памяти, следующим образом.
-- 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
Можно оценить свободное пространство в каждом файле с помощью следующего запроса.
Обратите внимание на столбец percent_full. In-Memory OLTP использует эвристические средства, чтобы определить последнюю транзакцию для файла данных. В зависимости от числа строк, измененных транзакцией, процент заполнения может различаться. Заполненное файловое пространство файла данных также может быть изменено, если была выполнена контрольная точка, которая закрыла этот файл. Также могут возникнуть файлы данных без строк. Это может быть вызвано созданной вручную контрольной точкой после удаления строк и перед добавлением строк.
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 позволяет использовать до 8,192 пар файлов данных и разностных файлов. Чтобы просмотреть количество активных пар файлов данных и разностных файлов, используйте следующий запрос.
-- 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
Чтобы оценить процент использования общего хранилища, выполните следующие действия.
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
См. также
Основные понятия
Оптимизированные для памяти динамические административные представления таблиц (Transact-SQL)