가속 데이터베이스 복구 관리
적용 대상: SQL Server 2019(15.x) 이상 버전
이 문서에서는 SQL Server 2019(15.x) 이상 버전에서 Transact-SQL(T-SQL)를 사용하여 ADR(가속 데이터베이스 복구) 사용하도록 설정하고 사용하지 않도록 설정하고 ADR에서 사용하는 PVS(영구 버전 저장소) 파일 그룹을 변경하는 방법을 설명합니다.
참고 항목
Azure SQL Database, Azure SQL Managed Instance 및 Microsoft Fabric의 SQL 데이터베이스에서 ADR(가속 데이터베이스 복구)은 항상 사용하도록 설정됩니다. PVS의 높은 스토리지 사용량 또는 느린 ADR 정리와 같은 문제가 관찰되면
가속 데이터베이스 복구를 고려해야 하는 경우
많은 고객은 ADR(가속 데이터베이스 복구)이 데이터베이스 복구 시간을 개선하는 데 중요한 기술이라고 찾습니다.
데이터베이스 워크로드에 다음과 같은 시나리오가 자주 발생하는 경우 ADR을 활용할 수 있습니다.
- 방지할 수 없는 장기 실행 트랜잭션입니다. 예를 들어 장기 실행 트랜잭션이 롤백될 위험이 있는 경우 ADR이 도움이 될 수 있습니다.
- 트랜잭션 로그가 크게 증가하는 활성 트랜잭션입니다.
- 데이터베이스의 가용성에 영향을 주는 장기 실행 데이터베이스 복구(예: 예기치 않은 SQL Server 다시 시작 또는 수동 트랜잭션 롤백 후).
ADR은 다음 시나리오에는 권장되지 않습니다.
- 데이터베이스 미러링 사용하는 데이터베이스는 지원되지 않습니다.
- 애플리케이션이 개별 트랜잭션에서 많은 양의 단일 행 수정을 사용하는 경우 워크로드가 ADR에 적합하지 않을 수 있습니다. 가능한 경우 다중 행 문에서 수정을 일괄 처리하고 대량의 작은 DML 트랜잭션을 방지하는 것이 좋습니다.
ADR 활성화
ADR은 기본적으로 꺼져 있으며 SQL Server 2019(15.x)부터 사용할 수 있습니다.
다음 Transact-SQL(T-SQL) 명령을 사용하여 ADR을 사용하도록 설정합니다.
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = ON;
ADR을 사용하거나 사용하지 않도록 설정하려면 전용 데이터베이스 잠금이 필요합니다. 즉, 모든 활성 세션이 사라질 때까지 ALTER DATABASE
명령이 차단되고 새 세션이 ALTER DATABASE
명령 뒤에서 대기합니다. 작업을 완료하고 잠금을 제거하는 것이 중요한 경우 WITH ROLLBACK [IMMEDIATE | AFTER {number} SECONDS | NO_WAIT]
종료 절을 사용하여 데이터베이스의 활성 세션을 중단할 수 있습니다. 자세한 내용은 ALTER DATABASE SET 옵션참조하세요.
ADR 사용 안 함
다음 T-SQL 명령을 사용하여 ADR을 사용하지 않도록 설정합니다.
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = OFF;
GO
ADR을 사용하지 않도록 설정한 후에도 모든 활성 트랜잭션이 완료될 때까지 시스템에서 논리 되돌리기를 위해 필요한 버전이 PVS에 저장될 수 있습니다.
PVS 파일 그룹 변경
기본적으로 PVS(영구 버전 저장소) 데이터는 PRIMARY
파일 그룹에 있습니다. 필요한 경우 PVS를 다른 파일 그룹으로 이동할 수 있습니다. 예를 들어 더 많은 공간 또는 더 빠른 스토리지가 필요할 수 있습니다.
PVS의 위치를 다른 파일 그룹으로 변경하려면 다음 단계를 수행합니다.
PVS용 파일 그룹을 만들고 이 파일 그룹에 하나 이상의 데이터 파일을 추가합니다. 예시:
ALTER DATABASE [<db_name>] ADD FILEGROUP [VersionStoreFG]; GO ALTER DATABASE [<db_name>] ADD FILE ( NAME = N'VersionStoreFG', FILENAME = N'E:\DATA\VersionStore.ndf', SIZE = 8192 MB, FILEGROWTH = 64 MB ) TO FILEGROUP [VersionStoreFG];
다음 T-SQL 명령을 사용하여 ADR을 사용하지 않도록 설정합니다.
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = OFF; GO
PVS에 저장된 모든 버전이 제거될 때까지 기다립니다.
새 PVS 위치를 사용하여 ADR을 사용하도록 설정하려면 먼저 모든 버전 정보가 이전 PVS 위치에서 제거되었는지 확인합니다. sys.sp_persistent_version_cleanup 저장 프로시저를 사용하여 강제로 정리를 실행할 수 있습니다.
EXEC sys.sp_persistent_version_cleanup [<db_name>];
sys.sp_persistent_version_cleanup
저장 프로시저는 동기적입니다. 즉, 현재 PVS에서 모든 버전 정보가 정리될 때까지 완료되지 않습니다. 완료되면 sys.dm_tran_persistent_version_store_stats 쿼리하고 다음 샘플과 같은persistent_version_store_size_kb
값을 검사하여 버전 정보가 제거되었는지 확인할 수 있습니다.SELECT DB_NAME(database_id), persistent_version_store_size_kb FROM sys.dm_tran_persistent_version_store_stats WHERE database_id = [MyDatabaseID];
persistent_version_store_size_kb
값이0
경우 새 파일 그룹의 PVS를 사용하여 ADR 기능을 다시 사용하도록 설정할 수 있습니다.ADR을 사용하도록 설정하고 다음 T-SQL 명령을 사용하여 새 PVS 위치를 지정합니다.
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = ON (PERSISTENT_VERSION_STORE_FILEGROUP = [VersionStoreFG]);
PVS 크기 모니터링
데이터베이스에서 ADR을 사용하도록 설정하면 PVS(영구 버전 저장소) 및 PVS 정리 성능의 크기를 모니터링합니다. 가속 데이터베이스 복구문제 해결에 나와 있는 방법을 사용하여 PVS의 상태를 모니터링할 수 있습니다.
DML 문(INSERT
, UPDATE
, DELETE
, MERGE
)이 많이 포함된 워크로드(예: 대량 OLTP)의 경우, 공간을 회수하기 위해 PVS 정리 프로세스에 휴식/복구 기간이 필요할 수 있습니다. 일반적으로 비즈니스 작업 주기는 이 시간을 허용하지만 일부 시나리오에서는 애플리케이션 활동 패턴을 활용하기 위해 PVS 정리 프로세스를 수동으로 시작할 수 있습니다.
워크로드 간 또는 유지 관리 기간 동안 PVS 정리 프로세스를 수동으로 활성화하려면 sys.sp_persistent_version_cleanup 저장 프로시저를 사용합니다.
PVS 정리 프로세스가 장기간 실행되는 경우 중단된 트랜잭션 수가 증가하여 PVS 크기도 증가할 수 있습니다. sys.dm_tran_aborted_transactions DMV를 사용하여 중단된 트랜잭션 수를 보고하고, sys.dm_tran_persistent_version_store_stats를 사용하여 정리 시작/종료 시간과 함께 PVS 크기를 보고합니다.
SNAPSHOT
격리를 사용하는 장시간 실행되는 쿼리를 특징으로 하는 워크로드 또는 RCSI(READ_COMMITTED_SNAPSHOT
) 데이터베이스 옵션을 사용할 때READ COMMITTED
격리를 사용하면 데이터베이스 엔진 인스턴스의 모든 데이터베이스에 대한 PVS 정리가 지연될 수 있으며, 이로 인해 PVS 크기가 증가할 수 있습니다. 자세한 내용은 가속 데이터베이스 복구문제 해결의 긴 활성 스냅샷 검사 섹션을 참조하세요.