금번 SQL Server 2016 (SQL 2016 SP1 CU8) 업그레이드 이후, Restore Server의 복원(Restore Database)수행 속도가 크게 저하되는 이슈가 있어,
원인 및 현상을 분석한 내용과, 대응 방안을 함께 공유합니다.
1. 현상
Org Svr Version | Restore Svr Version | Restore | CPU % | Time Sec | Restore MiB/sec | BufferCount | Transfer Size |
SQL 2008 R2 SP3 x64 STD | SQL 2016 STD SP1 CU8 x64 STD | Default | 27 | 426 | 892 | 6 | 1024 KiB |
SQL 2016 STD SP1 CU8 x64 STD | Default | 8 | 1448 | 262 | 6 | 1024 KiB |
: 복원 원본서버를 SQL Server 2008 R2 SP3 → SQL Server 2016 SP1 CU8 업그레이드 이후, 일복원 Restore 성능이 1/3 수준으로 감소하였습니다.
(890MiB/sec → 260MiB/sec)
2. 환경
환경 구분 | OS/DB | Backup | DB Information |
Restore Server | Windows Server 2012 R2 STD x64 | Compressed | Database Info: Reserved: 380,752MiB Server Spec: Xeon-G 6128 3.40GHz / 128GiB / 100GiB for SQL Server |
Old 원본 | Windows Server 2012 R2 STD x64 | Compressed | |
New 원본 | Windows Server 2012 R2 STD x64 | Compressed |
4.원인
: SQL Server 2016 이슈로 인한 복원성능저하로 확인 하였습니다. (SQL 2014~2017 해당)
> SQL Server Fix History "Slow restore performance when restoring a compressed backup on a disk with 4K sector size in SQL Server" 문서를 통해,
다음과 같은 경우에, 압축백업에 대해 복원성능 저하가 나타날 수 있음을 확인 하였습니다.
>> 4K sector size Disk에 복원을 수행하는 경우. (Restoring to a disk with 4K sector size. )
>> Azure IaaS VM에 복원하는 경우 (Azure VM Disk는 sector Size 4K 입니다.)
(Restoring to a SQL Server hosted on an Azure Infrastructure-as-a-Service Virtual Machines (IaaS VM) (Azure IaaS VM disks will have a 4K sector size).)
>> 512 Sector Size Disk에 1800 TF를 켜고 복원한 경우 (Restoring to a 512 sector size disk with Trace Flag (TF) 1800 enabled.))
5. Action Plan
: 위, MS Support 문서에 따라 SQL Server 2016 SP1 CU9 패치 이후, 아래 표와 같이 Restore Database 성능 저하 문제가 해결되는것을 확인 하였습니다.
Case | Org Svr Version | Restore Svr Version | Restore | CPU % | Time Sec | Restore MiB/sec | BufferCount | Transfer Size |
AS-IS | SQL 2008 R2 SP3 x64 STD | SQL 2016 STD SP1 CU8 x64 STD | Default | 27 | 426 | 892 | 6 | 1024 KiB |
SQL 2016 STD SP1 CU8 x64 STD | Default | 8 | 1448 | 262 | 6 | 1024 KiB | ||
TO-BE | SQL 2008 R2 SP3 x64 STD | SQL 2016 STD SP1 CU9 x64 STD | Default | 28 | 426 | 891 | 6 | 1024 KiB |
SQL 2016 STD SP1 CU8 x64 STD | Default | 28 | 454 | 837 | 6 | 1024 KiB |
6. 추가 검토사항
: SQL Server 2016 SP1 외 문제가 발생할수 있는 버전
> 위 첨부한 MS Support 문서에 따라, 증상이 발생할 수 있는 버전 대상과, 문제가 Fix된 버전은 다음과 같습니다.
(전체 버전 대상으로 테스트 해보지 못해, 증상이 발생하기 시작하는 시점은 확인하지 못했습니다.)
증상이 발생할 수 있는 버전 | Fix된 버전 |
SQL 2014 SP2 CU12 이하 버전 | SQL 2014 SP2 CU12 |
SQL 2016 SP1 CU8 이하 버전 | SQL 2016 SP1 CU9 |
SQL 2016 SP2 이하 버전 | SQL 2016 SP2 CU1 |
SQL 2017 CU6 이하 버전 | SQL 2017 CU7 |
: Disk Sector Size가 512인 경우에도 복원 성능저하 문제 발생
> 테스트 수행한 장비(SQL 2016 SP1 CU8)의 Disk Sector Size 512 Byte인 Disk Array에 대해서도 동일한 성능문제가 발생했으며,
이러한 경우에도 SQL 2016 SP1 CU9 업데이트를 통해 문제가 해결된 것을 확인 하였습니다.
넥슨 GameDB팀 / 차태욱
'MS SQL Server > Administration&Management' 카테고리의 다른 글
CMD 명령어로 SQL Server Edition Upgrade (0) | 2019.11.27 |
---|---|
MSDTC > DTCPing이 성공 했지만, 분산트랜잭션 수행 시 "No transaction is active." 오류가 발생하는 경우 (0) | 2018.08.29 |
SQL Server 프로그래밍기능 파라미터 검색 쿼리 (0) | 2016.03.24 |
tempdb 파일 삭제하기 (0) | 2016.03.20 |
대량의 트랜잭션으로 인한 LogShipping 복원 지연시, 최종 복원일자 찾기 (0) | 2015.03.16 |