SQL Server 복원 성능 최적화
· Version : SQL Server
SQL Server에서 백업 파일을 복원할때 빠르게 복원하기 위한 최적화 방법을 소개한다. 이 방법을 사용한다고 해서 무조건 빠르게 복원되지는 않으며, 사용할 수 있는 시스템 리소스에 따라 최적화된 옵션을 제공함으로써 좀 더 빠르게 복원할 수 있게 유도 하는 것이다.
데이터베이스 백업 및 복원에 대한 통계를 확인하기 위해 추적 플래그 3213, 3605를 설정한다.
DBCC TRACEON (3213, -1) DBCC TRACEON (3605, -1) |
데이터베이스를 복원하면, SQL 이벤트 로그에서 아래와 같은 내용을 확인할 수 있다.
기본 설정을 사용하면 최대 전송크기는 1024K 이고 버퍼수는 6인것을 확인할 수 있다. 이때 사용되는 총 버퍼 공간은 6MB이다.
총 버퍼공간 = 최대 전송크기 X 버퍼 수 |
여기서 주목해야 할 부분은 메모리 제한(Memory limit) 이다. 현재 필자의 메모리 제한은 4095 MB (사용자 마다 다름)이지만 사용되는 총 버퍼 공간은 6MB 이다. 따라서 총 버퍼 공간을 늘려 복원 속도를 높일 수 있다. 최대 전송 크기 및 버퍼수 변경은 데이터베이스 복원시 추가 매개변수로 사용할 수 있다.
아래 예시는 최대 메모리 제한까지 사용하기 위해서 MAXTRANSFERSIZE는 약4096K로 설정하고, BUFFERCOUNT는 1000으로 설정하였다.
RESTORE DATABASE [DB] FROM DISL = N'D:\DB\BACKUP\DB.BAK' WITH REPLACE, STATS = 5, MAXTRANSFERSIZE = 4194302, BUFFERCOUNT = 1000 |
추가 매개변수를 사용하여 데이터베이스를 복원할 경우, 복원의 속도는 빨라지겠지만 동일 서버에서 운영되는 다른 서비스에 영향을 미칠 수도 있다. 해당 옵션을 사용하기 전에 시스템의 리소스 가용능력, 사용량등을 확인할 수 있도록 한다.
중요한것은 실제 운영 환경에 반영하기전에 테스트 환경에서 먼저 검증을 할 수 있도록 한다.
[참고자료]
· Optimizing Backup and Restore Performance in SQL Server : https://docs.microsoft.com/en-us/previous-versions/sql/sql-server-2008-r2/ms190954(v=sql.105)?redirectedfrom=MSDN
2020-02-28/ Sungwook Kang / http://sungwookkang.com
SQL Server, MS SQL, Database Restore, SQL Server Recovery Step, 데이터베이스 복원, Database Recovery Process, BUFFERCOUNT, MAXTRANSFERSIZE
'SQL Server > SQL Server Tip' 카테고리의 다른 글
SQL Server 에서 AWS S3에 직접 백업하기 (2) | 2022.10.28 |
---|---|
VM 환경의 SQL Server에서 할당된 CPU를 모두 사용하지 못하는 현상 (0) | 2020.03.04 |
SQL Server 트랜잭션 로그 복원시 복원 시간이 오래 걸리는 현상 (0) | 2020.02.28 |
SQL Server 2019 temp table을 사용한 워크로드에서 recompile 감소 (0) | 2019.09.24 |
Azure SQL Managed Instance 및 SQL Server 2016 Later에서 대기 통계 분석 (0) | 2019.09.24 |