SQL Warehouse란?
💡 SQL Warehouse 는 SQL 쿼리를 실행하기 위한 전용 컴퓨팅 리소스 입니다. 일반 Spark 클러스터와 달리 SQL 분석에 최적화되어 있으며, BI 도구 연결, 대시보드 조회 등에 적합합니다.SQL Warehouse는 Databricks에서 데이터 분석과 BI 워크로드를 위해 설계된 전용 SQL 엔진 입니다. 내부적으로 Apache Spark 기반이지만, SQL 실행에 특화된 최적화가 적용되어 있으며, Photon 엔진이 기본 포함되어 빠른 쿼리 성능을 제공합니다.
왜 SQL Warehouse가 필요한가?
일반 All-Purpose Cluster로도 SQL을 실행할 수 있지만, SQL Warehouse를 사용하면 다음과 같은 이점이 있습니다.| 비교 항목 | All-Purpose Cluster | SQL Warehouse |
|---|---|---|
| 지원 언어 | Python, SQL, Scala, R | SQL 전용 |
| 주요 용도 | 개발, ETL, ML | SQL 분석, BI, 대시보드 |
| 최적화 | 범용 Spark | SQL 쿼리에 특화 (Photon 기본 포함) |
| 연결 | 노트북 | SQL Editor, BI 도구, JDBC/ODBC |
| 비용 | All-Purpose DBU 단가 | SQL DBU 단가 (더 저렴) |
| 동시성 | 제한적 | 멀티 클러스터 스케일링 으로 높은 동시성 지원 |
| 관리 | 사용자가 설정/관리 | 자동 관리 (특히 Serverless) |
| 보안 | Workspace 수준 | Unity Catalog 통합 (행/열 수준 보안) |
💡 언제 SQL Warehouse를 사용하나요? BI 도구 연결, 대시보드 조회, Ad-hoc SQL 분석, 정기 SQL 보고서 등 SQL 중심 워크로드 에는 항상 SQL Warehouse를 사용하는 것이 권장됩니다. Python/Scala 코드가 필요한 개발이나 ML 학습에는 All-Purpose Cluster를 사용합니다.
Photon 엔진
💡 Photon 은 Databricks가 C++로 개발한 차세대 벡터화 쿼리 엔진 입니다. Apache Spark의 SQL 실행 엔진을 대체하며, 동일한 쿼리를 최대 12배 빠르게 실행할 수 있습니다.
Photon의 핵심 특징
| 특징 | 설명 |
|---|---|
| 네이티브 벡터화 | C++로 작성되어 CPU 캐시와 SIMD 명령어를 활용합니다 |
| 코드 변경 없음 | 기존 SQL 쿼리를 수정할 필요 없이 자동으로 Photon이 적용됩니다 |
| Delta Lake 최적화 | Delta 파일 읽기/쓰기에 특화된 최적화가 적용되어 있습니다 |
| 자동 폴백 | Photon이 지원하지 않는 연산은 자동으로 Spark 엔진으로 전환됩니다 |
Photon 성능 비교
| 항목 | 기존 Spark SQL | Photon 엔진 |
|---|---|---|
| 구현 | JVM 기반 | C++ 네이티브 |
| 처리 방식 | 행(Row) 단위 | 벡터화(Vectorized) 처리 |
| 메모리 | 가비지 컬렉션 오버헤드 | 직접 메모리 관리 |
| 성능 | 기준 | 최대 12배 빠름 |
💡 벡터화(Vectorized) 처리란? 데이터를 한 행씩 처리하는 대신 열(Column) 단위로 수천 개의 값을 한 번에 처리 하는 방식입니다. 현대 CPU의 SIMD(Single Instruction, Multiple Data) 명령어를 활용하여 대폭적인 성능 향상을 얻을 수 있습니다.
SQL Warehouse 유형
Databricks는 세 가지 유형의 SQL Warehouse를 제공합니다.| 유형 | 설명 | Photon | 고급 기능 | 가격 |
|---|---|---|---|---|
| Serverless | Databricks가 완전 자동 관리. 수 초 내 시작합니다 | ✅ | ✅ | DBU에 VM 비용 포함 |
| Pro | 고급 기능 포함. 고객이 VM을 관리합니다 | ✅ | ✅ | DBU + VM 비용 별도 |
| Classic | 기본 SQL 기능만 제공합니다 | ✅ | ❌ | DBU + VM 비용 별도 |
유형별 기능 비교
| 기능 | Classic | Pro | Serverless |
|---|---|---|---|
| SQL 쿼리 실행 | ✅ | ✅ | ✅ |
| JDBC/ODBC 연결 | ✅ | ✅ | ✅ |
| Photon 엔진 | ✅ | ✅ | ✅ |
| AI 함수 (ai_query 등) | ❌ | ✅ | ✅ |
| 예측 함수 | ❌ | ✅ | ✅ |
| 쿼리 태그 | ❌ | ✅ | ✅ |
| 인텔리전트 워크로드 관리 | ❌ | ✅ | ✅ |
| 시작 시간 | 3~5분 | 3~5분 | 수 초 |
| 인프라 관리 | 고객 | 고객 | Databricks |
🆕 Serverless SQL Warehouse 가 현재 권장되는 기본 선택입니다. 수 초 만에 시작되고, 사용하지 않을 때는 자동으로 리소스를 해제하여 비용을 절약합니다.
Warehouse 사이징 가이드
SQL Warehouse는 T-Shirt 사이즈 로 크기를 선택합니다. 사이즈가 클수록 더 복잡한 쿼리를 빠르게 처리할 수 있습니다.| 사이즈 | 클러스터 워커 수 | DBU/시간 (참고) | 적합한 워크로드 |
|---|---|---|---|
| 2X-Small | 1 | ~2 | 가벼운 개발, 테스트, Ad-hoc 쿼리 |
| X-Small | 1 | ~4 | 소규모 쿼리, 소수 사용자 |
| Small | 2 | ~8 | 소규모 팀 분석 (5~10명) |
| Medium | 4 | ~16 | 중규모 워크로드, 대시보드 |
| Large | 8 | ~32 | 대규모 동시 쿼리, 복잡한 조인 |
| X-Large | 16 | ~64 | 고성능 분석, 대규모 집계 |
| 2X-Large ~ 4X-Large | 32~64 | 엔터프라이즈급 대규모 분석 |
💡 사이징 팁: 처음에는 Small 또는 Medium 으로 시작하고, 쿼리 프로필에서 병목을 분석한 후 필요하면 사이즈를 올리는 것이 좋습니다. 사이즈를 올리는 것보다 클러스터 수를 늘리는 것이 동시성에는 더 효과적입니다.
워크로드 유형별 추천
| 워크로드 | 추천 사이즈 | 클러스터 수 | 이유 |
|---|---|---|---|
| 개발/테스트 | 2X-Small | 1 | 비용 절감이 중요하며 동시 사용자가 적습니다 |
| 팀 대시보드 | Small~Medium | 2~4 | 여러 사용자가 동시에 대시보드를 조회합니다 |
| BI 도구 연결 | Medium~Large | 3~5 | Tableau/Power BI가 다수의 병렬 쿼리를 실행합니다 |
| 대규모 ETL (SQL) | Large~X-Large | 1~2 | 복잡한 조인과 대용량 집계가 필요합니다 |
| 전사 분석 플랫폼 | Medium | 5~10+ | 동시 사용자가 많으므로 클러스터 수로 확장합니다 |
스케일링 설정
Auto-Stop (자동 중지)
사용하지 않을 때 자동으로 중지하여 비용을 절약합니다.| 설정 | Serverless | Pro/Classic |
|---|---|---|
| 기본값 | 10분 | 45분 |
| 최소값 | 5분 | 10분 |
| 권장값 | 10분 | 10~15분 |
⚠️ Serverless는 Auto-Stop이 빠릅니다: Serverless는 수 초 만에 재시작되므로, 짧은 Auto-Stop 시간을 설정해도 사용자 경험에 영향이 없습니다. Pro/Classic은 재시작에 3~5분이 소요되므로 너무 짧으면 불편할 수 있습니다.
Scaling (멀티 클러스터 스케일링)
동시 사용자가 많을 때 자동으로 클러스터 수를 늘려 병렬 처리 능력을 확장합니다.| 구성 요소 | 역할 |
|---|---|
| 쿼리 요청 | 사용자/BI 도구에서 요청 |
| 로드 밸런서 | 쿼리를 클러스터에 분배 |
| 클러스터 1 (항상 활성) | 기본 처리 |
| 클러스터 2 (자동 확장) | 부하 증가 시 자동 추가 |
| 클러스터 3 (자동 확장) | 추가 부하 처리 |
| 캐시 레이어 | 디스크 기반 결과 캐싱 |
| Delta Lake | 실제 데이터 저장소 |
💡 여기서의 “클러스터”는 SQL Warehouse 내부의 컴퓨팅 단위입니다. 하나의 클러스터가 하나의 무거운 쿼리를 처리하므로, 클러스터 수 = 동시에 처리할 수 있는 무거운 쿼리 수로 이해하시면 됩니다. (가벼운 쿼리는 하나의 클러스터에서 여러 개를 동시에 처리할 수 있습니다.)
쿼리 큐잉 동작 원리
모든 클러스터가 사용 중일 때, 새로운 쿼리는 큐(Queue) 에 대기합니다.| 상황 | 동작 |
|---|---|
| 클러스터에 여유가 있음 | 즉시 실행됩니다 |
| 클러스터가 모두 사용 중 | 큐에 대기하며, 스케일 아웃이 가능하면 새 클러스터를 추가합니다 |
| 최대 클러스터에 도달 | 기존 쿼리가 완료될 때까지 큐에서 대기합니다 |
| 큐 대기 시간 초과 | 쿼리가 취소됩니다 (기본 타임아웃은 설정 가능) |
비용 관리
DBU 비용 구조
| 유형 | DBU 단가 (참고) | VM 비용 | 총 비용 |
|---|---|---|---|
| Classic | 낮음 | 별도 과금 | DBU + VM |
| Pro | 중간 | 별도 과금 | DBU + VM |
| Serverless | 높음 | DBU에 포함 | DBU만 (올인원) |
💡 Serverless가 더 저렴할 수 있습니다: DBU 단가는 Serverless가 높지만, VM 비용이 포함되어 있고, 유휴 시간 비용이 없으며, 관리 인건비가 절감되므로 총 소유 비용(TCO) 은 Serverless가 유리한 경우가 많습니다.
비용 모니터링
BI 도구 연결
SQL Warehouse는 JDBC/ODBC 표준 프로토콜을 지원하여 다양한 BI 도구와 연결할 수 있습니다.| BI 도구 | 연결 방식 | 특징 |
|---|---|---|
| Tableau | Databricks 전용 커넥터 또는 ODBC | 가장 많이 사용되는 BI 연결입니다 |
| Power BI | Databricks 전용 커넥터 | DirectQuery 모드 지원으로 실시간 조회가 가능합니다 |
| Looker | JDBC | LookML 모델에서 Databricks 테이블을 직접 참조합니다 |
| dbt | Databricks 어댑터 | SQL 기반 데이터 변환 파이프라인을 구축합니다 |
| Excel | ODBC 또는 Databricks Excel Add-in | 스프레드시트에서 직접 SQL을 실행합니다 |
| Sigma | Databricks 커넥터 | 클라우드 네이티브 BI 도구입니다 |
🆕 Databricks Excel Add-in: Public Preview로 출시되어, Excel에서 직접 SQL을 실행하고 데이터를 가져올 수 있습니다.
연결 정보 확인
SQL Warehouse 상세 페이지에서 Connection details 탭을 클릭하면 연결에 필요한 정보를 확인할 수 있습니다.| 정보 | 설명 | 예시 |
|---|---|---|
| Server Hostname | 워크스페이스의 호스트명입니다 | adb-1234567890.12.azuredatabricks.net |
| HTTP Path | SQL Warehouse의 고유 경로입니다 | /sql/1.0/warehouses/abc123def456 |
| Port | HTTPS 포트입니다 | 443 |
Partner Connect
Partner Connect 를 사용하면 BI 도구 연결을 몇 번의 클릭만으로 설정할 수 있습니다.- Workspace에서 Partner Connect 메뉴를 엽니다
- 연결할 BI 도구(예: Tableau, Power BI)를 선택합니다
- SQL Warehouse와 카탈로그를 지정합니다
- 자동으로 서비스 프린시펄과 토큰이 생성됩니다
- BI 도구에서 자동으로 연결이 설정됩니다
모니터링
쿼리 히스토리
SQL Warehouse에서 실행된 모든 쿼리의 이력을 확인할 수 있습니다.| 확인 항목 | 설명 |
|---|---|
| 실행 시간 | 쿼리 시작/종료 시간, 소요 시간을 확인합니다 |
| 사용자 | 누가 쿼리를 실행했는지 추적합니다 |
| 상태 | 성공, 실패, 취소 등의 상태를 확인합니다 |
| 리소스 사용 | 스캔한 데이터 크기, 반환된 행 수를 확인합니다 |
쿼리 프로필
개별 쿼리의 실행 계획과 병목 지점 을 상세히 분석할 수 있습니다.실습: SQL Warehouse 생성 및 최적 설정
Step 1: Warehouse 생성
- Databricks Workspace에서 SQL Warehouses 메뉴로 이동합니다
- Create SQL Warehouse 클릭합니다
- 다음 설정을 입력합니다:
| 설정 | 값 | 이유 |
|---|---|---|
| Name | team-analytics | 용도를 명확히 하는 이름입니다 |
| Type | Serverless | 빠른 시작, 자동 관리를 위해 선택합니다 |
| Size | Small | 10명 이하의 팀에 적합합니다 |
| Min clusters | 1 | 최소 1개 클러스터를 항상 유지합니다 |
| Max clusters | 3 | 동시 부하 시 최대 3개까지 확장합니다 |
| Auto stop | 10분 | Serverless는 재시작이 빠르므로 짧게 설정합니다 |
Step 2: 쿼리 실행 테스트
Step 3: 쿼리 프로필 분석
- 쿼리 실행 후 Query Profile 탭을 클릭합니다
- Scan 단계에서 읽은 파일 수와 데이터 크기를 확인합니다
- Shuffle 단계에서 네트워크 데이터 이동량을 확인합니다
- 병목이 있으면 사이즈 업 또는 쿼리 최적화를 고려합니다
정리
| 핵심 개념 | 설명 |
|---|---|
| SQL Warehouse | SQL 분석에 최적화된 전용 컴퓨팅 리소스입니다 |
| Photon | C++ 벡터화 엔진으로 SQL 쿼리를 최대 12배 빠르게 실행합니다 |
| Serverless | 자동 관리, 수 초 시작, 비용 효율적. 대부분의 경우에 권장됩니다 |
| T-Shirt 사이즈 | 워크로드 규모에 따라 2X-Small ~ 4X-Large 중 선택합니다 |
| 멀티 클러스터 | 동시 사용자 증가 시 클러스터 수를 자동으로 늘려 대응합니다 |
| Auto-Stop | 유휴 시 자동 중지하여 비용을 절약합니다 |
| JDBC/ODBC | 표준 프로토콜로 Tableau, Power BI 등 BI 도구와 연결됩니다 |