이 문서에서는 Synapse SQL의 리소스 소비 모델을 설명합니다.
서버리스 SQL 풀
서버리스 SQL 풀은 적절한 크기를 선택할 필요가 없는 쿼리당 지불 서비스입니다. 사용자의 요구 사항에 따라 시스템이 자동으로 조정되므로 인프라를 관리하고 솔루션에 적합한 크기를 선택해야 하는 업무 부담이 없습니다.
전용 SQL 풀 - DWU(데이터 웨어하우스 단위) 및 cDWU(컴퓨팅 데이터 웨어하우스 단위)
가격 및 성능을 최적화하기 위해 이상적인 DWU(데이터 웨어하우스 단위) 수 선택 및 단위 수를 변경하는 방법에 대한 권장 사항입니다.
데이터 웨어하우스 단위
Synapse SQL 풀은 프로비전되는 분석 리소스의 컬렉션을 나타냅니다. 분석 리소스는 CPU, 메모리 및 IO의 조합으로 정의됩니다. 이러한 세 가지 리소스는 DWU(데이터 웨어하우스 단위)라는 컴퓨팅 크기 단위로 번들로 제공됩니다. DWU는 컴퓨팅 리소스 및 성능에 대한 추상적이고 정규화된 측정값을 나타냅니다. 서비스 수준을 변경하면 시스템에서 사용할 수 있는 DWU 수가 변경됩니다. 이 변경으로 인해 시스템의 성능과 비용이 조정됩니다.
성능 향상을 위해 데이터 웨어하우스 단위 수를 늘릴 수 있습니다. 성능을 낮추려면 데이터 웨어하우스 단위를 줄입니다. 스토리지 및 컴퓨팅 비용은 별도로 청구되므로 데이터 웨어하우스 단위를 변경해도 스토리지 비용에 영향을 주지 않습니다.
데이터 웨어하우스 단위의 성능은 다음 데이터 웨어하우스 워크로드 메트릭을 기반으로 합니다.
- 표준 데이터 웨어하우징 쿼리가 많은 수의 행을 검색한 다음 복잡한 집계를 수행할 수 있는 속도. 이 작업은 I/O 및 CPU 집약적입니다.
- 데이터 웨어하우스가 Azure Storage Blob 또는 Azure Data Lake에서 데이터를 수집할 수 있는 속도. 이 작업은 네트워크 및 CPU를 많이 사용합니다.
- T-SQL 명령이 테이블을 얼마나 빠르게 복사할 수 있는지. 이 작업에는 스토리지에서 데이터를 읽고, 어플라이언스의 노드에 분산하고, 스토리지에 다시 쓰는 작업이 포함됩니다. 이 작업은 CPU, IO 및 네트워크 집약적입니다.
DWU 늘리기:
- 시스템의 스캔, 집계 및 CTAS 문 성능을 선형적으로 변화시킵니다.
- PolyBase 로드 작업에 대한 판독기 및 기록기 수를 늘입니다.
- 동시 쿼리 및 동시성 슬롯의 최대 수를 늘입니다.
서비스 수준 목표
SLO(서비스 수준 목표)는 데이터 웨어하우스의 비용 및 성능 수준을 결정하는 확장성 설정입니다. Gen2의 서비스 수준은 cDWU(컴퓨팅 데이터 웨어하우스 단위)로 측정됩니다(예: DW2000c). Gen1 서비스 수준은 DWU(예: DW2000)로 측정됩니다.
SLO(서비스 수준 목표)는 데이터 웨어하우스의 비용 및 성능 수준을 결정하는 확장성 설정입니다. Gen2 전용 SQL 풀의 서비스 수준은 DWU(데이터 웨어하우스 단위)로 측정됩니다(예: DW2000c).
비고
Azure Synapse Analytics Gen2는 최근 100 cDWU의 낮은 컴퓨팅 계층을 지원하기 위해 추가 확장 기능을 추가했습니다. 낮은 컴퓨팅 계층이 필요한 Gen1의 기존 데이터 웨어하우스는 이제 추가 비용 없이 현재 사용할 수 있는 지역의 Gen2로 업그레이드할 수 있습니다. 지역이 아직 지원되지 않는 경우 지원되는 지역으로 업그레이드할 수 있습니다. 자세한 내용은 Gen2로 업그레이드를 참조하세요.
T-SQL에서 SERVICE_OBJECTIVE 설정은 전용 SQL 풀의 서비스 수준 및 성능 계층을 결정합니다.
CREATE DATABASE mySQLDW
(Edition = 'Datawarehouse'
,SERVICE_OBJECTIVE = 'DW1000c'
)
;
성능 계층 및 데이터 웨어하우스 단위
각 성능 계층은 데이터 웨어하우스 단위에 대해 약간 다른 측정 단위를 사용합니다. 이러한 차이는 규모 단위가 청구로 직접 변환되므로 청구서에 반영됩니다.
- Gen1 데이터 웨어하우스는 DWU(데이터 웨어하우스 단위)로 측정됩니다.
- Gen2 데이터 웨어하우스는 cDWU(컴퓨팅 데이터 웨어하우스 단위)로 측정됩니다.
DWU와 cDWU는 모두 컴퓨팅 확장 또는 축소를 지원하고, 데이터 웨어하우스를 사용할 필요가 없는 경우 컴퓨팅을 일시 중지할 수 있습니다. 이러한 작업은 모두 주문형입니다. Gen2는 컴퓨팅 노드에서 로컬 디스크 기반 캐시를 사용하여 성능을 향상시킵니다. 시스템의 크기를 조정하거나 일시 중지하면 캐시가 무효화되므로 최적의 성능을 달성하기 전에 캐시 온난화 기간이 필요합니다.
데이터 웨어하우스 단위를 늘리면 컴퓨팅 리소스가 선형적으로 증가합니다. Gen2는 최상의 쿼리 성능과 가장 높은 규모를 제공합니다. 또한 Gen2 시스템은 캐시를 최대한 활용합니다.
용량 한도
각 SQL 서버(예: myserver.database.windows.net)에는 특정 수의 데이터 웨어 하우스 단위를 허용하는 DTU(데이터베이스 트랜잭션 단위) 할당량이 있습니다. 자세한 내용은 워크로드 관리 용량 제한을 참조하세요.
필요한 데이터 웨어하우스 단위 수 평가
이상적인 데이터 웨어하우스 단위 수는 워크로드 및 시스템에 로드한 데이터의 양에 따라 크게 달라집니다.
워크로드에 가장 적합한 DWU를 찾는 단계:
- 먼저 더 작은 DWU를 선택합니다.
- 데이터 로드를 시스템에 테스트하는 동안 애플리케이션의 성능을 모니터링하고, 선택한 DWU 수와 관찰한 성능을 비교하십시오.
- 피크 활동의 주기적인 기간에 대한 추가 요구 사항을 식별합니다. 활동에서 상당한 피크 및 저점을 보이는 워크로드는 자주 조정이 필요할 수 있습니다.
SQL 풀은 방대한 양의 컴퓨팅 및 쿼리 크기가 큰 양의 데이터를 프로비전할 수 있는 스케일 아웃 시스템입니다. 특히 더 큰 DWU에서 크기 조정에 대한 진정한 기능을 확인하려면 CPU를 공급하기에 충분한 데이터가 있는지 확인하기 위해 확장할 때 데이터 집합의 크기를 조정하는 것이 좋습니다. 규모 테스트의 경우 1TB 이상을 사용하는 것이 좋습니다.
비고
컴퓨팅 노드 간에 작업을 분할할 수 있는 경우 더 많은 병렬 처리로만 쿼리 성능이 향상됩니다. 크기 조정이 성능을 변경하지 않는 경우 테이블 디자인 및/또는 쿼리를 조정해야 할 수 있습니다. 쿼리 튜닝 지침은 사용자 쿼리 관리를 참조하세요.
권한
데이터 웨어하우스 단위를 변경하려면 ALTER DATABASE에 설명된 권한이 필요합니다.
SQL DB 기여자 및 SQL Server 기여자와 같은 Azure 기본 제공 역할은 DWU 설정을 변경할 수 있습니다.
현재 DWU 설정 보기
현재 DWU 설정을 보려면 다음을 수행합니다.
- Visual Studio에서 SQL Server 개체 탐색기를 엽니다.
- 논리 SQL 서버와 연결된 master 데이터베이스에 연결합니다.
- sys.database_service_objectives 동적 관리 보기에서 선택합니다. 예제는 다음과 같습니다.
SELECT db.name [Database]
, ds.edition [Edition]
, ds.service_objective [Service Objective]
FROM sys.database_service_objectives AS ds
JOIN sys.databases AS db ON ds.database_id = db.database_id
;
데이터 웨어하우스 단위 변경
Azure Portal
DWU를 변경하려면 다음을 수행합니다.
Azure Portal을 열고 데이터베이스를 열고 크기 조정을 선택합니다.
크기 조정에서 슬라이더를 왼쪽 또는 오른쪽으로 이동하여 DWU 설정을 변경합니다.
저장을 선택합니다. 확인 메시지가 표시됩니다. 예를 선택하여 확인하거나 아니요를 선택하여 취소합니다.
PowerShell
비고
Azure Az PowerShell 모듈을 사용하여 Azure와 상호 작용하는 것이 좋습니다. 시작하려면 Azure PowerShell 설치를 참조하세요. Az PowerShell 모듈로 마이그레이션하는 방법에 대한 자세한 내용은 Azure PowerShell을 AzureRM에서 Azure로 마이그레이션을 참조하세요.
DWU를 변경하려면 Set-AzSqlDatabase PowerShell cmdlet을 사용합니다. 다음 예제에서는 서버 MyServer에서 호스트되는 데이터베이스 MySQLDW에 대한 서비스 수준 목표를 DW1000으로 설정합니다.
Set-AzSqlDatabase -DatabaseName "MySQLDW" -ServerName "MyServer" -RequestedServiceObjectiveName "DW1000c"
자세한 내용은 Azure Synapse Analytics용 PowerShell cmdlet을 참조하세요.
T-SQL
T-SQL을 사용하면 현재 DWUsettings를 보고, 설정을 변경하고, 진행률을 확인할 수 있습니다.
DWU를 변경하려면 다음을 수행합니다.
- 서버와 연결된 마스터 데이터베이스에 연결합니다.
- ALTER DATABASE TSQL 문을 사용합니다. 다음 예제에서는 데이터베이스 MySQLDW에 대한 서비스 수준 목표를 DW1000c로 설정합니다.
ALTER DATABASE MySQLDW
MODIFY (SERVICE_OBJECTIVE = 'DW1000c')
;
REST API
DWU를 변경하려면 데이터베이스 만들기 또는 업데이트 REST API를 사용합니다. 다음 예제에서는 서버 MyServer에서 호스트되는 데이터베이스 MySQLDW에 대한 서비스 수준 목표를 DW1000c로 설정합니다. 서버는 ResourceGroup1이라는 Azure 리소스 그룹에 있습니다.
PUT https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Sql/servers/{server-name}/databases/{database-name}?api-version=2014-04-01-preview HTTP/1.1
Content-Type: application/json; charset=UTF-8
{
"properties": {
"requestedServiceObjectiveName": DW1000
}
}
더 많은 REST API 예제는 Azure Synapse Analytics용 REST API를 참조하세요.
DWU 변경 상태 확인
DWU 변경 내용을 완료하는 데 몇 분 정도 걸릴 수 있습니다. 자동으로 크기를 조정하는 경우 다른 작업을 진행하기 전에 특정 작업이 완료되었는지 확인하기 위해 논리를 구현하는 것이 좋습니다.
다양한 엔드포인트를 통해 데이터베이스 상태를 확인하면 자동화를 올바르게 구현할 수 있습니다. 포털은 작업 및 데이터베이스의 현재 상태가 완료될 때 알림을 제공하지만 상태의 프로그래밍 방식 검사는 허용하지 않습니다.
Azure Portal을 사용하여 스케일 아웃 작업에 대한 데이터베이스 상태를 확인할 수 없습니다.
DWU 변경 상태를 확인하려면 다음을 수행합니다.
- 서버와 연결된 마스터 데이터베이스에 연결합니다.
- 다음 쿼리를 제출하여 데이터베이스 상태를 확인합니다.
SELECT *
FROM sys.databases
;
- 작업 상태를 확인하려면 다음 쿼리를 제출합니다.
SELECT *
FROM sys.dm_operation_status
WHERE resource_type_desc = 'Database'
AND major_resource_id = 'MySQLDW'
;
이 DMV는 작업 및 작업 상태(IN_PROGRESS 또는 COMPLETED)와 같은 전용 SQL 풀의 다양한 관리 작업에 대한 정보를 반환합니다.
크기 조정 워크플로
크기 조정 작업을 시작하면 시스템은 먼저 열려 있는 모든 세션을 종료하고 열려 있는 트랜잭션을 롤백하여 일관된 상태를 보장합니다. 크기 조정 작업의 경우 크기 조정은 이 트랜잭션 롤백이 완료된 후에만 발생합니다.
- 강화 작업의 경우 시스템은 모든 컴퓨팅 노드를 분리하고 추가 컴퓨팅 노드를 프로비전한 다음 스토리지 계층에 다시 연결합니다.
- 스케일 다운 작업의 경우 시스템은 모든 컴퓨팅 노드를 분리한 다음 필요한 노드만 스토리지 계층에 다시 연결합니다.
다음 단계
성능 관리에 대한 자세한 내용은 워크로드 관리 및 메모리 및 동시성 제한에 대한 리소스 클래스를 참조하세요.