Azure SQL의 내부 디스크 할당 방법 및 저장 가능 용량 확인
· Version : Azure SQL
Azure SQL Database Managed Instance는 모든 데이터베이스 파일을 Azure Storage에 보관하는 Azure Cloud SQL Server 서비스 이다. 이번 포스트에서는 Managed Instance가 스토리지 계층에 디스크를 할당하는 방법과 최대 사용한 가능한 디스크 공간을 확인하는 방법에 대해서 살펴본다.
Azure SQL Database Managed Instance는 일반적인 목적의 스토리지 계층과 데이터베이스 파일이 위치하는 Azure Premium 스토리지 계층을 가지고 있다. Managed Instance는 모든 파일에 대해 미리 정의된 크기의 Azure disk(128GB, 256GB, 512GB 등)를 사용한다. 모든 파일은 현재 파일의 크기를 포함할 수 있는 가장 작은 단일 디스크에 저장된다. 이는 모든 Managed Instance가 최대 35TB의 내부 저장장치를 가지고 있기 때문에 중요하다. 즉 Managed Instance를 프로비저닝하면 두 가지 스토리지 제한이 있다.
1. Managed Instance 사용자 저장소는 사용자가 포털에서 선택한 managed instance 저장소 이며 저장소 크기에 따라 비용을 지불한다.
2. Azure Premium disk는 내부에서 물리적으로 공간을 할당할 때 35TB를 초과 할 수 없다. 결과적으로 GP 인스턴스에서 가장 작은 디스크(128GB)에 위치한 280개의 파일이 35TB 한도에 도달하므로 GP인스턴스에 는280개 넘는 파을을 저장할 수 없다.
데이터베이스 파일을 만들때, Azure Premium Disk를 사용하는데 파일크기가 클 경우 파일의 내부 조각화가 발생할 수 있다. Azure Premium Disk는 고정된 디스크 크기 집합을 제공하므로 Managed Instance는 데이터베이스 파일을 일치하는 디스크에 저장하도록 구현된다. 할당된 디스크 크기의 합은 35TB를 초과할 수 없다. 만약 한계에 도달하면 에러가 발생할 수 있다. 아래 스크립트는 저장용량 한도에 도달했는지 확인할 수 있다. sys.master_files뷰를 래핑하고 모든 파일에 할당된 디스크 크기를 반환하는 표준 스키마뷰를 만든다.
CREATE SCHEMA mi; GO CREATE OR ALTER VIEW mi.master_files AS WITH mi_master_files AS ( SELECT *, size_gb = CAST(size * 8. / 1024 / 1024 AS decimal(12,4)) FROM sys.master_files ) SELECT *, azure_disk_size_gb = IIF( database_id <> 2, CASE WHEN size_gb <= 128 THEN 128 WHEN size_gb > 128 AND size_gb <= 256 THEN 256 WHEN size_gb > 256 AND size_gb <= 512 THEN 512 WHEN size_gb > 512 AND size_gb <= 1024 THEN 1024 WHEN size_gb > 1024 AND size_gb <= 2048 THEN 2048 WHEN size_gb > 2048 AND size_gb <= 4096 THEN 4096 ELSE 8192 END, NULL) FROM mi_master_files; GO |
이제 Azure Premium disk에 할당된 모든 데이터베이스 파일에 대한 크기를 볼 수 있다.
SELECT db = db_name(database_id), name, size_gb, azure_disk_size_gb from mi.master_files; |
Azure disk 크기의 합은 35TB를 초과해서는 안된다. 그렇지 않으면 Azure disk 오류가 발생한다. 다음 쿼리를 사용하여 총 할당된 저장 공간을 확인할 수 있다.
SELECT storage_size_tb = SUM(azure_disk_size_gb) /1024. FROM mi.master_files |
아래 스크립트는 새로운 파일이 128GB보다 작은것으로 가정하고 Managed Instance에 추가할 수 있는 파일 수를 확인한다. 결과값이 0일 경우 (또는 0에 근사할 수록) 파일을 할당할 수 없으므로 새로운 계획이 필요 하다.
SELECT remaining_number_of_128gb_files = (35 - ROUND(SUM(azure_disk_size_gb) /1024,0)) * 8 FROM mi.master_files |
[참고자료]
2018-09-05 / Sungwook Kang / http://sqlmvp.kr
Azure SQL, Managed Instance, SQL, Azure disk, database file. Azure storage
'SQL Server > SQL on Azure' 카테고리의 다른 글
Azure SQL에 도입된 새로운 집계 함수 APPROX_COUNT_DISTINCT (0) | 2019.03.26 |
---|---|
Azure SQL의 데이터베이스 소유권 체인 (0) | 2019.03.26 |
Azure SQL에서 이메일 보내기 (0) | 2019.03.26 |
Azure SQL에서 읽기 전용 복제본에 대한 접속 및 링크 서버 생성 (0) | 2019.03.26 |
Azure SQL에서 네트워크를 구성하는 방법 (0) | 2019.03.26 |