데이터베이스 개발자 Tip & 강좌

SQLER의 개발자들이 만들어가는 데이터베이스 사용자 Tip & 강좌 게시판입니다. SQL서버, Oracle, MySQL 등 여러 클라우드/오픈소스 기반 데이터베이스 개발 및 운영 관련 팁과 쿼리 노하우를 이곳에서 가장 먼저 접하실 수 있습니다. 많은 도움 되시길 바랍니다.

Azure VM에서 SQL Server 대한 저장소 구성 지침

 

·         Version : Azure VM

 

Azure Virtual Machines 에서 SQL Server 사용할 경우 VM  SQL Server 완벽하게 제어하고 SQL Server 작업 부하를 위한 가장 간단한 클라우드 마이그레이션 경로를 제공한다.

·         SQL Server on Virtual Machines :  https://azure.microsoft.com/en-us/services/virtual-machines/sql-server/

 

SQL IaaS Extension 기본적으로 Azure Market Place 통해 생성된  SQL VM 설치 된다. SQL IaaS Extension 백업 관리자동 보안 패치연결 구성, AKV 통합  최적화된 스토리지 구성 기능을 제공한다. Azure Market SQL Server 이미지는 작업 부하 유형에 따라 SQL Server 팀이 성능에 맞춰 조절한다그러나 SQL Server 업무상 중요한 서비스를 하는 경우 최적의 저장소 구성은 특정 작업 부하의 I/O 특성  요구 사항에 따라 다르다이번 포스트는 Azure IaaS에서 수행된 테스트를 기반으로 SQL Server 팀의 지침을 설명한다.

 

[프리미엄 저장소  적절한 크기의 VM 선택]

프리미엄 스토리지는 낮은 대기 시간과 일관된 높은 I/O 성능을 제공하도록 설계되었다캐시되지 않은 읽기는 평균 4ms 대기 시간으로 작동하고 캐시되지 않은 쓰기는 VM  평균 2ms 대기 시간  최대 80,000 IOPS 작동한다또한 예측할  없는 작업에서도 호스트의 SSD 기반 BLOB 캐시 기술은 대기 시간이 1ms 미만이며 최대 160,000 IOPS 제공한다따라서 일관된 I/O 성능과 높은 성능으로 인해 Azure VM에서 SQL Server 서비스는 프리미엄 스토리지를 사용할 것을 권장한다.

 프리미엄 스토리지는VM 따라IOPS, 대역폭  연결할  있는 디스크 수에 대한 크기 제한  성능 사양이 있다예를 들어 표준 DS14_v2 VM크기는 64개의 프리미엄 디스크를 사용하여 최대 51,200 IOPS또는 768MBps 디스크 처리량을 제공하며 로컬 SSD  576GB BLOB 캐시를 사용하여 최대 64,000 IOPS또는 512MBps 처리량을 제공한다아래 링크에서 모든 VM 크기에 할당된 제한  리소스를 확인할  있다.

·         Memory optimized virtual machine sizes : https://docs.microsoft.com/en-us/azure/virtual-machines/windows/sizes-memory

 

[읽기가 많은 작업 경우 읽기 전용 캐시를 사용하여 처리량을 향상]

프리미엄 스토리지를 지원하는 Azure VM 캐싱을 위해 가상 시스템 RAM 로컬SSD 조합을 사용하는 다중 계층 캐싱 기술을 사용한다. SQL 서버 작업 부하를 가져오는 읽기 전용 캐시 이득은 작업량 특성에 따라 다르다.

아래의 테스트 결과는  10-P30 디스크가 장착된 DS14_v2 VM에서 최대 50,000 IOPS 사용하는 OLTP 작업 부하로 테스트했다데이터  로그 파일은  테스트를 위해 10-P30 디스크에서 동일한 저장 영역 풀에 있다.

읽기 80%, 쓰기 20%, 약간의 tempdb 사용하는 OLTP 작업 부하의 경우 캐시가 없는 동일한 구성에 비해 모든 프리미엄 디스크에 대해 읽기 전용 캐시가 활성화 되었을  처리량이 42% 증가했다읽기 50%, 쓰기 50%, 약간의 tempdb 사용하는 OLTP 작업 부하의 경우 캐시가 없는 구성에 비해 읽기 전용 캐시의 처리량이 25% 증가했다.

 

[데이터  로그 파일의 분리]

데이터  로그 파일을 분리한 별도의 저장 영역을 사용하여 읽기 전용 캐시의 이득을 최적화 하는 것이 좋다캐시가 없는 프리미엄 스토리지 디스크에 로그파일을 호스팅 하면 읽기 작업에 대해서는 호스트 BLOB 캐시의 사용 가능한 공간과 처리량이 절약되어 이점을 극대화 한다특히  SQL Server 데이터 파일을 호스팅하는 저장소에 포함될 프리미엄 저장소 디스크에는 읽기 전용 캐시를 사용하는 것이 좋다예를 들어 데이터 파일에  IOPS 요구사항이 30,000 이라면 모든 디스크에 RO 캐시를 활성화   6 - P30 디스크 또는 4 - P50 디스크를 스트라이핑 하는것이 좋다.

 

로그 파일을 호스팅 하는 저장소에 포함될 프리미엄 저장소 디스크는 읽기전용 캐시를 구성하지 않는것이 좋다또한 로그 파일의 디스크 처리량 요구 사항이 7500 IOPS 미만인 경우 단일 P50 디스크로 IOPS 달성할  있으므로 로그 파일에 대한 저장소 풀이 필요하지 않다특히 작은 호스트 BLOB 캐시가 있는 VM에서SQL Server 작업의 부하가  경우 로그 파일과 데이터 파일을  분리하였을때 테스트에서 상당한 처리량 증가를 보였다평균적인 예로 데이터를 호스팅하는것과 비교하여 RO 캐시가 있는 별도의 스토리지 풀에서 호스트되는 캐시  데이터 파일이 없는 스토리지 풀에서 로그 파일을 호스팅할   쓰기 50% 비율의 OLTP 테스트 경우  처리량이 35%  증가했다.  

 

[올바른 크기의 VM 선택   로컬 SSD tempdb 배치]

VM 크기에 따라 로컬 SSD  BLOB 캐시에 대해 최대 대역폭최대 처리량  크기 제한이 가능한 스토리지 용량을 정의한다. Tempdb 사용량이 높은 업무용 SQL Server 경우 로컬 SSD temp db 호스팅하면 작업 부하 성능과 처리량에  영향을 준다. VM 로컬 SSD 대한 크기처리량  대역폭 제한이 tempdb IO 요구 사항을 허용해야 한다그리고  VM 호스트 BLOB 캐시 스케일 한계는 로컬 SSD 읽기  호스트 BLOB 캐시 읽기가 발생하는  읽기 활동을 허용할 만큼 충분히 커야 한다.

최대 로컬 디스크 + SSD 캐시 성능” 한계는 로컬 SSD 읽기  쓰기 작업  SSD 캐시의 읽기 작업에 대한 최대 작업을 정의한다. tempdb  로컬 SSD 디스크에 배치되고 SQL Server 데이터 파일을 호스팅하는 프리미엄 디스크에 RO 캐시가 사용되는 경우 tempdb에서 구동되는 읽기 쓰기 IOPS RO 캐시의 읽기 IOPS 공유된다예를들어 표준 DS14_v2 임시 디스크의 크기가 224GB이고 호스트 캐시가 576GB이며 로컬 캐시의 tempdb 활동과 함께 읽기 캐시에 사용할  있는 최대 처리량은 64,000 IOPS  524MB/s이다.

 

Storage Optimized L-Series 또는 Memory Optimized M-Series  로컬 SSD 최대 14TB이고 메모리가 최대 4TB 이다이러한 서버는 고부하의 SQL Server 작업을 처리하는데 가장 적합하다적절한 VM 크기 선택 구성으로 Azure VM SQL Server 작업 부하에 대해 미션 크리티컬 성능을 얻을  있다.

 

[참고자료]

https://blogs.msdn.microsoft.com/sqlserverstorageengine/2018/09/25/storage-configuration-guidelines-for-sql-server-on-azure-vm/

 

 

2018-10-02 / Sungwook Kang / http://sqlmvp.kr

 

Azure SQL, Azure VM, BLOB Storage, local SSD, local cache, SQL Server On Azure VM, SQL Server on Azure



출처: https://sqlmvp.tistory.com/1286?category=663684 [Database Lab]
No. Subject Author Date Views
2172 SQL Server에서 테이블 이름을 변경하지 않고 테이터만 교체하기 jevida(강성욱) 2019.05.03 1903
2171 SQL Server master 데이터베이스 정리 jevida(강성욱) 2019.04.23 4730
2170 SQL Server 프로토콜과 SQLCMD를 사용한 연결 jevida(강성욱) 2019.04.23 1618
2169 SQL Server Edition 다운그레이드 후 확인사항 [1] jevida(강성욱) 2019.04.23 1533
2168 AlwaysOn 구성환경에서 Server Role 체크 후 Job Agent 실행 중지하기 jevida(강성욱) 2019.04.23 907
2167 SSRS에서 E-mail 세팅시 SSL 사용 유무 수정하기 jevida(강성욱) 2019.03.26 873
2166 SQL Linux Instance Name 변경 jevida(강성욱) 2019.03.26 753
2165 SQL Linux 업그레이드 jevida(강성욱) 2019.03.26 997
2164 Azure SQL Managed Instance 에서 SQL Agent의 Job history 기록 보관하기 jevida(강성욱) 2019.03.26 857
» Azure VM에서 SQL Server에 대한 저장소 구성 지침 jevida(강성욱) 2019.03.26 867
2162 Azure SQL에 도입된 새로운 집계 함수 APPROX_COUNT_DISTINCT jevida(강성욱) 2019.03.26 652
2161 Azure SQL의 데이터베이스 소유권 체인 jevida(강성욱) 2019.03.26 768
2160 Azure SQL의 내부 디스크 할당 방법 및 저장 가능 용량 확인 jevida(강성욱) 2019.03.26 791
2159 Azure SQL에서 이메일 보내기 jevida(강성욱) 2019.03.26 657
2158 Azure SQL에서 읽기 전용 복제본에 대한 접속 및 링크 서버 생성 jevida(강성욱) 2019.03.26 777
2157 Azure SQL에서 네트워크를 구성하는 방법 jevida(강성욱) 2019.03.26 507
2156 인덱스 재구성과 통계 업데이트시 발생하는 SQL Server Block jevida(강성욱) 2019.03.26 754
2155 SQL Server Scala UDF Inline 기능을 사용한 쿼리 성능 향상 jevida(강성욱) 2019.03.26 632
2154 SQL Server 가용성 그룹에 데이터베이스 자동으로 추가하기 jevida(강성욱) 2019.03.26 614
2153 SQL Server MySQL PostgreSQL 비교 jevida(강성욱) 2019.03.26 1070





XE Login