sys.dm_db_xtp_검사point_files(Transact-SQL)

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

파일 크기, 실제 위치 및 트랜잭션 ID를 포함하여 메모리 내 OLTP 검사point 파일에 대한 정보를 표시합니다.

참고 항목

닫혀 있지 않은 현재 검사 지점의 경우 새 파일의 sys.dm_db_xtp_checkpoint_files 상태 열은 UNDER CONSTRUCTION입니다. 검사포인트는 마지막 검사포인트 이후 충분한 트랜잭션 로그 증가가 있거나 명령을 실행 CHECKPOINT 한 경우 자동으로 닫힙니다. 자세한 내용은 CHECKPOINT(Transact-SQL)를 참조하세요.

메모리 최적화 파일 그룹은 내부적으로 추가 전용 파일을 사용하여 메모리 내 테이블에 대해 삽입 및 삭제된 행을 저장합니다. 두 가지 유형의 파일이 있으며, 데이터 파일에는 삽입된 행이 포함되고 델타 파일에는 삭제된 행에 대한 참조가 포함됩니다.

SQL Server 2014(12.x)는 최신 버전과 크게 다르며 SQL Server 2014에서 설명합니다.

자세한 내용은 메모리 최적화 개체에 대한 스토리지 만들기 및 관리를 참조 하세요.

SQL Server 2016(13.x) 이상

다음 표에서는 SQL Server 2016(13.x)부터 시작하는 열에 대해 sys.dm_db_xtp_checkpoint_files설명합니다.

열 이름 Type 설명
container_id int 데이터 또는 델타 파일의 일부인 컨테이너의 ID(FILESTREAM sys.database_files형식의 파일로 표시됨)입니다. file_idsys.database_files(Transact-SQL)와 조인합니다.
container_guid uniqueidentifier 루트, 데이터 또는 델타 파일의 일부인 컨테이너의 GUID입니다. file_guid 테이블에 조인합니다sys.database_files.
검사point_file_id uniqueidentifier 검사point 파일의 GUID입니다.
relative_file_path nvarchar(256) 매핑되는 컨테이너를 기준으로 하는 파일의 경로입니다.
file_type smallint -1(무료)

DATA 파일의 경우 0입니다.

DELTA 파일의 경우 1입니다.

ROOT 파일의 경우 2

큰 데이터 파일의 경우 3
file_type_desc nvarchar(60) FREE - FREE로 기본 모든 파일을 할당할 수 있습니다. 무료 파일은 시스템의 예상 요구 사항에 따라 크기가 달라질 수 있습니다. 최대 크기는 1GB입니다.

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 데이터의 경우 삽입된 행의 수입니다.

델타의 경우 드롭 테이블을 고려한 후 삭제된 행의 수입니다.

Root의 경우 NULL입니다.
state smallint 0 - 미리 생성됨

1 - 건설 중

2 - ACTIVE

3 - 병합 대상

8 - 로그 잘림 대기
state_desc nvarchar(60) PRECREATED - 트랜잭션이 실행될 때 새 파일을 할당하기 위한 대기를 최소화하거나 제거하기 위해 많은 검사point 파일이 미리 할당됩니다. 이러한 파일의 크기는 다양할 수 있으며 워크로드의 예상 요구 사항에 따라 만들어집니다. 데이터가 없습니다. 이는 MEMORY_OPTIMIZED_DATA 파일 그룹이 있는 데이터베이스의 스토리지 오버헤드입니다.

UNDER CONSTRUCTION - 이러한 검사포인트 파일이 생성 중이므로 데이터베이스에서 생성된 로그 레코드에 따라 채워지고 있으며 아직 검사 요소의 일부가 아닙니다.

ACTIVE - 이전의 닫힌 검사 지점에서 삽입/삭제된 행이 포함됩니다. 데이터베이스를 다시 시작할 때 트랜잭션 로그의 활성 부분을 적용하기 전에 영역이 메모리로 읽은 테이블의 내용이 포함됩니다. 병합 작업이 트랜잭션 워크로드를 따라가고 있다고 가정하면 이러한 검사point 파일의 크기는 메모리 최적화 테이블의 메모리 내 크기의 약 2배가 될 것으로 예상합니다.

MERGE TARGET - 병합 작업의 대상 - 이러한 검사point 파일은 병합 정책에 의해 식별된 원본 파일의 통합 데이터 행을 저장합니다. 병합이 설치되면 MERGE 대상은 활성 상태로 전환됩니다.

LOG TRUNCATION 대기 - 병합이 설치되고 MERGE 대상 CFP가 지속형 검사포인트의 일부이면 병합 원본 검사포인트 파일이 이 상태로 전환됩니다. 메모리 최적화 테이블을 사용하여 데이터베이스의 작동 정확성을 위해 이 상태의 파일이 필요합니다. 예를 들어 지속성 검사포인트에서 복구하여 시간을 거슬러 올라가야 합니다.
lower_bound_tsn bigint 파일에서 트랜잭션의 하한입니다. NULL 상태가 아닌 경우(1, 3).
upper_bound_tsn bigint 파일에서 트랜잭션의 상한; NULL 상태가 아닌 경우(1, 3).
begin_검사point_id bigint 시작 검사point의 ID입니다.
end_검사point_id bigint 끝 검사point의 ID입니다.
last_updated_검사point_id bigint 이 파일을 업데이트한 마지막 검사포인트의 ID입니다.
encryption_상태 smallint 0, 1, 2
encryption_상태_desc nvarchar(60) 0 => 암호화되지 않음

1 => 키 1로 암호화됨

2 => 키 2로 암호화되었습니다. 활성 파일에만 유효합니다.

SQL Server 2014(12.x)

다음 표에서는 SQL Server 2014(12.x)열에 대해 sys.dm_db_xtp_checkpoint_files설명합니다.

열 이름 Type 설명
container_id int 데이터 또는 델타 파일의 일부인 컨테이너의 ID(FILESTREAM sys.database_files형식의 파일로 표시됨)입니다. file_idsys.database_files(Transact-SQL)와 조인합니다.
container_guid uniqueidentifier 데이터 또는 델타 파일이 속한 컨테이너의 GUID입니다.
검사point_file_id GUID 데이터 또는 델타 파일의 ID입니다.
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 - 병합 대상

4 - 병합된 원본

5 - BACKUP/HA에 필요

6 - 삭제 표시로 전환 중

7 - 삭제 표시
state_desc nvarchar(60) PRECREATED - 트랜잭션이 실행될 때 새 파일을 할당하기 위한 대기를 최소화하거나 제거하기 위해 검사포인트 파일 쌍(CFP)으로도 알려진 작은 데이터 및 델타 파일 쌍 집합이 미리 할당된 상태로 유지됩니다. 데이터 파일 크기가 128MB이고 델타 파일 크기가 8MB이지만 데이터가 포함되지 않습니다. CFP 수는 최소값이 8개인 논리 프로세서 또는 스케줄러의 수(코어당 1개, 최대값 없음)로 계산됩니다. 이는 메모리 최적화 테이블이 있는 데이터베이스의 고정 스토리지 오버헤드입니다.

UNDER CONSTRUCTION - 마지막으로 검사 지점 이후 새로 삽입되고 삭제된 데이터 행을 저장하는 CFP 집합입니다.

ACTIVE - 이전의 닫힌 검사 지점에서 삽입된 행과 삭제된 행이 포함됩니다. 이러한 CFP에는 데이터베이스를 다시 시작할 때 트랜잭션 로그의 활성 부분을 적용하기 전에 필요한 모든 삽입된 행과 삭제된 행이 포함됩니다. 이러한 CFP의 크기는 메모리 최적화 테이블의 메모리 내 크기의 약 2배이며, 병합 작업이 트랜잭션 워크로드와 함께 현재 상태라고 가정합니다.

MERGE TARGET - CFP는 병합 정책에 의해 식별된 CFP의 통합 데이터 행을 저장합니다. 병합이 설치되면 MERGE 대상은 활성 상태로 전환됩니다.

MERGED SOURCE - 병합 작업이 설치되면 원본 CFP가 MERGED SOURCE로 표시됩니다. 병합 정책 평가기는 여러 병합을 식별할 수 있지만 CFP는 하나의 병합 작업에만 참여할 수 있습니다.

BACKUP/HA에 필요 - 병합이 설치되고 MERGE TARGET CFP가 지속성 검사point의 일부이면 병합 원본 CFP가 이 상태로 전환됩니다. 메모리 최적화 테이블을 사용하여 데이터베이스의 작동 정확성을 위해 이 상태의 CFP가 필요합니다. 예를 들어 지속성 검사포인트에서 복구하여 시간을 거슬러 올라가야 합니다. 로그 잘림 지점이 트랜잭션 범위를 벗어나면 CFP가 가비지 수집에 대해 표시될 수 있습니다.

TOMBSTONE으로 전환 - 이러한 CFP는 메모리 내 OLTP 엔진에서 필요하지 않으며 가비지 수집될 수 있습니다. 이 상태는 이러한 CFP가 백그라운드 스레드가 TOMBSTONE인 다음 상태로 전환되기를 기다리고 있음을 나타냅니다.

TOMBSTONE - 이러한 CFP는 파일 스트림 가비지 수집기에서 가비지 수집되기를 기다리고 있습니다. (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 이 델타 파일에 쓴 마지막 검사point의 트랜잭션입니다. 델타 파일에 대한 워터마크입니다.
last_검사point_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;