クエリ キャッシュ
キャッシュは、同じデータを複数回再計算またはフェッチする必要性をなくして、データ ウェアハウス システムのパフォーマンスを向上させるために不可欠な手法です。 Databricks SQL では、キャッシュを使用すると、クエリの実行を大幅に高速化し、ウェアハウスの使用量を最小限に抑えることができるため、コストを削減し、リソースをより効率的に使用できます。 各キャッシュ レイヤーによって、クエリのパフォーマンスが向上し、クラスターの使用量が最小限に抑えられ、リソース使用率が最適化されてシームレスなデータ ウェアハウス エクスペリエンスが実現します。
キャッシュにより、データ ウェアハウスでは次のような多くの利点が得られます。
- 速度: クエリ結果や頻繁にアクセスされるデータをメモリやその他の高速ストレージ メディアに格納して、キャッシュによってクエリの実行時間を大幅に短縮できます。 システムでは、キャッシュされた結果を再計算するのではなく、迅速に取得できるため、このストレージはクエリを繰り返し実行する場合に特に便利です。
- クラスター使用量の削減: キャッシュを使用すると、以前に計算された結果を再利用することで、追加のコンピューティング リソースの必要性が最小限に抑えられます。 これにより、ウェアハウスの全体的なアップタイムと追加のコンピューティング クラスターの必要性が減少するため、コストが削減され、より適切なリソース割り当てが実現します。
Databricks SQL のクエリ キャッシュの種類
Databricks SQL では、いくつかの種類のクエリ キャッシュが実行されます。
Databricks SQL UI キャッシュ: すべてのクエリとダッシュボードのユーザーごとのキャッシュは、Databricks SQL UI になります。 ユーザーが最初にダッシュボードまたは SQL クエリを開くと、Databricks SQL UI キャッシュに、スケジュールされた実行の結果を含む最新のクエリ結果が表示されます。
Databricks SQL UI キャッシュには、最大で 7 日間のライフ サイクルがあります。 キャッシュは、アカウント内の Azure Databricks ファイルシステム内にあります。 クエリ結果を削除するには、保存する必要がなくなったクエリを再実行します。 再実行すると、前のクエリの結果はキャッシュから削除されます。 さらに、基になるテーブルが更新されると、キャッシュは無効になります。
結果キャッシュ: SQL ウェアハウスを介したすべてのクエリに対するクエリ結果の、クラスターごとのキャッシュ。 結果キャッシュには、ローカルとリモートの両方の結果キャッシュが含まれます。これらは連携してクエリ結果をメモリまたはリモート ストレージ メディアに格納することで、クエリのパフォーマンスを向上させます。
- ローカル キャッシュ: ローカル キャッシュはメモリ内キャッシュであり、クラスターの有効期間またはキャッシュがいっぱいになるまでのどちらか早い方のクエリ結果を格納します。 このキャッシュでは同じ結果を再計算する必要がないため、繰り返し行われるクエリを高速化するのに役立ちます。 ただし、クラスターが停止または再起動されると、キャッシュはクリーンされ、すべてのクエリ結果は削除されます。
- リモート結果キャッシュ: リモート結果キャッシュは、クエリ結果をワークスペース システム データとして保持することで保持するサーバーレスのみのキャッシュ システムです。 そのため、このキャッシュは、SQL ウェアハウスの停止や再起動によって無効になりません。 リモート結果キャッシュを使用すると、クエリ結果をメモリ内にキャッシュする際の一般的な問題点を解決できます。メモリ内キャッシュは、コンピューティング リソースが稼働している間しか使用できません。 リモート キャッシュは、Databricks ワークスペース内のすべてのウェアハウスにおける永続的な共有キャッシュです。
リモート結果キャッシュにアクセスするには、実行中のウェアハウスが必要です。 クエリの処理時に、クラスターでは、まずローカル キャッシュ内が検索され、必要に応じてリモート結果キャッシュ内が検索されます。 どちらのキャッシュにもクエリ結果がキャッシュされていない場合にのみ、クエリが実行されます。 ローカルとリモートのキャッシュのライフ サイクルはどちらも 24 時間であり、これはキャッシュ エントリから開始されます。 リモート結果キャッシュは、SQL ウェアハウスの停止や再起動後も保持されます。 基になるテーブルが更新されると、両方のキャッシュが無効になります。
リモート結果キャッシュは、ODBC/JDBC クライアントと SQL Statement API を使用したクエリで使用できます。
クエリ結果のキャッシュを無効にするには、SQL エディターで
SET use_cached_result = false
を実行します。重要
このオプションは、テストまたはベンチマークでのみ使用してください。
ディスク キャッシュ: SQL ウェアハウスを介してクエリを実行するためにデータ ストレージから読み取られるデータのローカル SSD キャッシュ。 ディスク キャッシュは、ディスクにデータを格納してクエリのパフォーマンスを向上させ、高速データ読み取りを可能にするように設計されています。 高速な中間形式を使用して、ファイルがフェッチされると、データが自動的にキャッシュされます。 コンピューティング ノードに接続されているローカル ストレージにファイルのコピーを格納すると、ディスク キャッシュによってデータがワーカーの近くに配置され、クエリパフォーマンスが向上します。 「Azure Databricks でキャッシュを使用してパフォーマンスを最適化する」を参照してください。
ディスク キャッシュでは、主要な機能に加えて、基になるデータ ファイルの変更が自動的に検出されます。 変更が検出されると、キャッシュは無効になります。 ディスク キャッシュはローカルの結果キャッシュと同じライフサイクルの特性を共有します。 つまり、クラスターが停止または再起動されると、キャッシュがクリーンされ、再度格納する必要があります。
クエリ結果のキャッシュとディスク キャッシュは、Databricks SQL UI や、BI などの外部クライアントのクエリに影響を与えます。