SQL Warehouseは「サイズを上げれば速くなる」と思われがちですが、実際にはサイズ・クラスタ数・キャッシュ設定の 3つのレバーを理解しないとコストが膨らむだけで性能が出ません。 この記事では、サイズ選定の考え方から同時実行制御、キャッシュ層の動作、チューニング手順までを体系的に整理します。
SQL Warehouseのサイズはクラスタのコンピュートリソース量を決定します。 サイズが大きいほど1クエリあたりの処理能力が上がりますが、DBUコストも比例して増加します。
| サイズ | クラスタあたりDBU/h | 適用シナリオ | 同時実行目安 |
|---|---|---|---|
| 2X-Small | 2 | ダッシュボードの軽量クエリ、開発・テスト用途 | 2〜4 |
| X-Small | 4 | 小規模チームの日常クエリ、データ検証 | 4〜8 |
| Small | 8 | 中規模テーブル(〜数百GB)の集計、レポート | 8〜12 |
| Medium | 16 | 大規模テーブルの結合、ETL後の検証 | 10〜16 |
| Large | 32 | TBクラスのフルスキャン、複雑なウィンドウ関数 | 12〜20 |
| X-Large | 64 | マルチTBの重い分析、広範なJOIN | 16〜24 |
| 2X-Large | 128 | 全社レベルの大規模集計、BIツール連携 | 20〜30 |
| 3X-Large | 256 | エクストリームワークロード | 24〜36 |
| 4X-Large | 512 | 最大規模のリアルタイム分析 | 30〜48 |
クラスタ数を増やすとスケールアウトで同時実行数を伸ばせますが、各クラスタが個別のDisk Cacheを持つため、 キャッシュヒット率が下がる可能性があります。サイズアップ(スケールアップ)は1クエリの処理能力を上げ、 クラスタ数増加(スケールアウト)は並列クエリ数を上げる、と使い分けます。
SQL Warehouseはリソースが不足するとクエリをキュー(待機列)に入れます。 ダッシュボードのロード時に多数のクエリが同時発行されるとQueuing Timeが支配的になり、 ユーザー体験が大幅に悪化します。
Result Cacheは、まったく同じSQLテキストが再実行されたときに、前回の結果セットをそのまま返す仕組みです。 クエリのコンパイルやデータスキャンを完全にスキップするため、最も高速なキャッシュ層です。
ダッシュボードのように同じクエリが繰り返し実行されるワークロードでは、Result Cacheが非常に効果的です。 逆に、WHERE句のパラメータが毎回異なるアドホッククエリではヒットしません。
Disk Cacheは、リモートストレージ(S3/ADLS/GCS)から読み込んだデータをWarehouseノードのローカルSSDに キャッシュする仕組みです。2回目以降のクエリでは、ネットワーク越しのI/Oを回避してローカルSSDから データを読み取るため、スキャン速度が大幅に向上します。
Predictive I/Oは、Databricksが過去のクエリパターンを学習し、次に必要になりそうなデータを先読みする仕組みです。 テーブル統計情報とクエリ履歴を活用して、フィルタ条件に合致するファイルを事前にフェッチします。
IWMはPro / Serverless Warehouseで使える機能で、Warehouse内のリソースをクエリ単位で動的に配分します。 従来のClassic Warehouseでは固定スロットにクエリを割り当てていましたが、IWMでは小さなクエリに少ないリソースを、 大きなクエリに多くのリソースを自動配分します。
| 観点 | Classic Warehouse | Pro / Serverless(IWM有効) |
|---|---|---|
| リソース配分 | 固定スロット | クエリサイズに応じた動的配分 |
| 小クエリの扱い | 大クエリと同じスロットを消費 | 少ないリソースで即座に完了 |
| Queuing発生 | スロット満杯で頻発 | リソース効率化で低減 |
| 設定 | 手動(同時実行数の設定) | 自動(管理者の設定不要) |
以下は実務でSQL Warehouseのパフォーマンスを改善するための推奨手順です。
まずクエリを「ダッシュボード用(繰り返し同じクエリ)」「アドホック(毎回異なるクエリ)」 「ETL検証(重い結合・集計)」に分類します。特性が大きく異なるワークロードは別のWarehouseに分離します。
Query Profileでスキャンデータ量と実行時間を確認し、上記のサイズ選定表を目安に初期サイズを決定します。 迷ったら小さめから始めて段階的にサイズアップするのが安全です。
Scaling PolicyをOptimizedに設定し、Min Clustersを1(コールドスタート回避)、 Max Clustersをピーク時の同時実行数に基づいて設定します。
Auto Stop時間を10分程度に設定してDisk Cacheの保持時間を確保しつつ、アイドルコストとのバランスを取ります。 ダッシュボード用WarehouseではResult Cacheのヒット率を監視し、非決定性関数の排除やクエリテキストの統一を検討します。
Query HistoryでQueuing Time、Execution Time、Rows Scannedを定期的に確認します。 Queuing Timeが全体の10%を超える場合はクラスタ数の追加、Execution Timeが長い場合はサイズアップ、 Rows Scannedが過大な場合はクエリ最適化(パーティショニング、Z-ORDER、フィルタ追加)を検討します。
Data Analyst Associate
問題 1
ある企業のDatabricks SQL Warehouseで、ダッシュボードの表示に30秒以上かかるとユーザーからクレームが入った。Query Historyを確認したところ、個々のクエリの実行時間は2〜3秒だが、Queuing Timeが25秒を超えている。最も効果的な改善策はどれか。
正解: B
クエリ自体の実行時間は2〜3秒と短く、ボトルネックはQueuing Time(リソース待ち)です。サイズアップは1クエリの処理能力を上げますがキュー解消には効果が薄く、Max Clustersを増やしてスケールアウトすることで並列処理能力が上がり、Queuing Timeが短縮されます。CACHE SELECTという構文は存在せず、Auto Stop延長はDisk Cache保持には有効ですがQueuing Timeとは無関係です。
SQL Warehouseのサイズを後から変更するとクエリに影響しますか?
サイズ変更はWarehouseの再起動を伴います。実行中のクエリがある場合はキューに入り、再起動完了後に再実行されます。ダウンタイムを避けたい場合は、ピーク前にサイズ変更を完了させるか、別のWarehouseにトラフィックを逃がす設計が実務では使われます。
Serverless SQL WarehouseとClassic SQL Warehouseのキャッシュ動作に違いはありますか?
Result Cache(結果キャッシュ)はどちらでも同じ動作です。Disk Cache(SSDキャッシュ)はClassicではローカルSSDに保持されますが、Serverlessではマネージドなキャッシュ層が自動管理され、ユーザーがSSDサイズを意識する必要はありません。Predictive I/Oの恩恵はServerlessの方が受けやすい傾向があります。
IWM(Intelligent Workload Management)とQuery Queuingの関係は?
IWMはWarehouse内のリソースをクエリの優先度やサイズに応じて動的に配分する仕組みで、Pro/Serverless Warehouseで利用できます。Query Queuingはリソースが不足したときにクエリを待機させる動作です。IWMが有効だとリソース配分が最適化されるため、キューイング発生頻度は下がりますが、極端な高負荷では依然としてキューイングは発生します。
NicheeLab編集部
データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。
Databricks資格一覧|全7試験・難易度・勉強法
Databricks認定資格全7試験の一覧・難易度・出題範囲・合格ラインを徹底解説。2026年最新版の公式試験ガイドに準...
Databricks試験の難易度ランキング|全7資格を徹底比較
Databricks認定全7試験の難易度をランキング形式で徹底比較。合格率・学習時間・出題傾向から難易度を分析。...
Databricks資格の勉強方法|最短合格ルートと学習時間の目安
Databricks認定資格に最短で合格するための勉強方法を完全ガイド。公式リソース・問題集・学習スケジュールを徹底解説...
Databricks Data Engineer Associate完全解説|出題範囲・問題例・合格戦略
Databricks Certified Data Engineer Associate試験を徹底解説。5つの出題ドメイ...
Databricks Data Engineer Professional完全解説|上級試験の攻略法
Databricks Certified Data Engineer Professional試験を徹底解説。10の出題...