보존 정책을 사용하여 과거 데이터 관리
Important
Azure SQL Edge는 2025년 9월 30일에 사용 중지됩니다. 자세한 내용 및 마이그레이션 옵션은 사용 중지 알림을 참조하세요.
참고 항목
Azure SQL Edge는 더 이상 ARM64 플랫폼을 지원하지 않습니다.
데이터베이스 및 기본 테이블에 대해 데이터 보존 정책을 정의한 후 백그라운드 시간 타이머 태스크가 실행되어 데이터 보존이 사용하도록 설정된 테이블에서 사용되지 않는 레코드를 제거 합니다. 일치하는 행을 식별하고 이를 테이블에서 제거하는 작업은 시스템에서 예약하고 실행되는 백그라운드 작업으로 투명하게 수행됩니다. 테이블 행의 사용 기간 조건은 테이블 정의에 지정된 filter_column
열을 기반으로 확인됩니다. 예를 들어 보존 기간을 1주일로 설정하면 정리 대상 테이블 행이 다음 조건 중 하나를 충족합니다.
- 필터 열에서 DATETIMEOFFSET 데이터 형식을 사용되는 경우 조건은
filter_column < DATEADD(WEEK, -1, SYSUTCDATETIME())
입니다. - 그렇지 않으면 조건은
filter_column < DATEADD(WEEK, -1, SYSDATETIME())
입니다.
데이터 보존 정리 단계
데이터 보존 정리 작업은 다음 두 단계로 구성됩니다.
- 검색 - 이 단계에서는 정리 작업을 통해 사용자 데이터베이스 내의 모든 테이블을 식별하여 정리 목록을 작성합니다. 검색은 하루에 한 번 실행합니다.
- 정리 - 이 단계에서 정리는 검색 단계에서 식별된 데이터 보존 기간이 한정된 모든 테이블에 대해 실행됩니다. 테이블에 대해 정리 작업을 수행할 수 없는 경우 현재 실행에서는 해당 테이블을 건너뛰고 다음 반복에서 다시 시도됩니다. 정리하는 동안 다음 원칙이 사용됩니다.
- 사용되지 않는 행이 다른 트랜잭션에 의해 잠긴 경우에는 해당 행을 건너뜁니다.
- 정리는 기본 잠금 시간 제한인 5초로 실행됩니다. 시간 제한 창 내의 테이블에서 잠금을 실행할 수 없는 경우 현재 실행에서는 해당 테이블을 건너뛰고 다음 반복에서 다시 시도됩니다.
- 테이블을 정리하는 동안 오류가 발생하면, 해당 테이블은 건너뛰고 다음 반복에서 선택됩니다.
수동 정리
테이블의 데이터 보존 설정 및 데이터베이스의 워크로드 특성에 따라, 자동 정리 스레드가 실행되는 동안 사용되지 않는 모든 행을 완전히 제거하지 못할 수 있습니다. 사용자가 사용되지 않는 행을 수동으로 제거할 수 있도록 sys.sp_cleanup_data_retention
저장 프로시저가 Azure SQL Edge에 도입되었습니다.
이 저장 프로시저는 다음 세 가지 매개 변수를 사용합니다.
@schema_name
: 테이블에 대한 소유 스키마의 이름입니다. 필수입니다.@table_name
: 수동 정리를 실행할 테이블의 이름입니다. 필수입니다.@rowcount
: 출력 변수입니다. 수동 정리 sp에 의해 정리된 행 수를 반환합니다. 선택 사항.
자세한 내용은 sys.sp_cleanup_data_retention(Transact-SQL)을 참조하세요.
다음 예제에서는 테이블 dbo.data_retention_table
에 대한 수동 정리 sp의 실행을 표시합니다.
DECLARE @rowcnt BIGINT;
EXEC sys.sp_cleanup_data_retention 'dbo', 'data_retention_table', @rowcnt OUTPUT;
SELECT @rowcnt;
사용되지 않는 행을 삭제하는 방법
정리 프로세스는 테이블의 인덱스 레이아웃에 따라 달라집니다. 보존 기간이 한정된 모든 테이블에 대한 사용하지 않는 데이터 정리를 수행하는 백그라운드 작업이 만들어집니다. rowstore(힙 또는 B-트리) 인덱스에 대한 정리 논리를 사용해 오래된 행을 더 작은 청크(최대 10,000)로 삭제하여 데이터베이스 로그 및 I/O 하위 시스템에 대한 압력을 최소화합니다. 정리 논리에서 필요한 B-트리 인덱스를 활용하긴 하지만 보존 기간보다 오래된 행의 삭제 순서를 확실히 보장할 수는 없습니다. 즉, 애플리케이션의 정리 순서에 의존하지 마세요.
Warning
힙 및 B-트리 인덱스의 경우 데이터 보존은 기본 테이블에서 삭제 쿼리를 실행합니다. 이 쿼리는 테이블의 삭제 트리거와 충돌할 수 있습니다. 테이블에서 삭제 트리거를 제거하거나 DML 트리거를 삭제한 테이블에서 데이터 보존을 사용하지 않아야 합니다.
클러스터형 columnstore 인덱스에 대한 정리 작업은 전체 행 그룹을 한 번에 제거하므로(일반적으로 각 그룹에 1백만 개 행 포함) 효율적이며, 데이터가 빠른 속도로 생성되고 만료되는 경우에 특히 효율적입니다.
클러스터형 columnstore 인덱스는 데이터 압축이 뛰어나고 보존 정리가 효율적이므로 작업에서 대량의 데이터를 빠르게 생성하는 시나리오에 적합합니다.
데이터 보존 정리 모니터링
데이터 보존 정책 정리 작업은 Azure SQL Edge의 확장 이벤트를 사용하여 모니터링할 수 있습니다. 확장 이벤트에 대한 자세한 내용은 확장 이벤트 개요를 참조하세요.
다음 확장 이벤트는 정리 작업의 상태를 추적하는 데 도움을 줍니다.
이름 | 설명 |
---|---|
data_retention_task_started | 보존 정책이 포함된 테이블의 정리를 위한 백그라운드 작업이 시작될 때 발생합니다. |
data_retention_task_completed | 보존 정책이 포함된 테이블의 정리를 위한 백그라운드 작업이 종료될 때 발생합니다. |
data_retention_task_exception | 보존 정책이 포함된 테이블의 정리를 위한 백그라운드 작업이 해당 테이블과 관련된 보존 정리 프로세스를 벗어날 때 발생합니다. |
data_retention_cleanup_started | 데이터 보존 정책이 있는 테이블의 정리 프로세스가 시작될 때 발생합니다. |
data_retention_cleanup_exception | 보존 정책이 있는 테이블의 정리 프로세스가 실패할 때 발생합니다. |
data_retention_cleanup_completed | 데이터 보존 정책이 있는 테이블의 정리 프로세스가 종료될 때 발생합니다. |
또한 sys.dm_os_ring_buffers
동적 관리 뷰에 RING_BUFFER_DATA_RETENTION_CLEANUP
이라는 새 링 버퍼 유형이 추가되었습니다. 이 보기를 사용하여 데이터 보존 정리 작업을 모니터링할 수 있습니다.