クエリのキャッシュ

キャッシュは、同じデータを何度も再計算したりフェッチしたりする必要性を回避し、データウェアハウス システムのパフォーマンスを向上させるために不可欠な手法です。 Databricks SQL では、キャッシュによりクエリの実行が大幅に高速化され、ウェアハウスの使用量が最小限に抑えられるため、コストが削減され、リソースの使用効率が向上します。 各キャッシュ層は、クエリのパフォーマンスを向上させ、クラスターの使用量を最小限に抑え、リソースの使用率を最適化して、シームレスなデータウェアハウス エクスペリエンスを実現します。

キャッシュには、データウェアハウスに次のような多くの利点があります。

  • 速度: キャッシュは、クエリ結果や頻繁にアクセスされるデータをメモリやその他の高速ストレージ メディアに格納することで、クエリの実行時間を大幅に短縮できます。 このストレージは、システムがキャッシュされた結果を再計算する代わりにすばやく取得できるため、反復的なクエリに特に役立ちます。

  • クラスター使用量の削減: キャッシュは、以前のコンピュートの結果を再利用することにより、追加のコンピュートリソースの必要性を最小限に抑えます。 これにより、ウェアハウス全体の稼働時間と追加のコンピュートクラスターの需要が削減され、コスト削減とリソース割り当ての改善につながります。

Databricks SQL のクエリ キャッシュの種類

Databricks SQL は、いくつかの種類のクエリ キャッシュを実行します。

クエリ キャッシュ
  • Databricks SQL UI キャッシュ: Databricks SQL UIのすべてのクエリとダッシュボードの結果をユーザーごとにキャッシュします。 ユーザーが初めてダッシュボードまたは SQL クエリを開いたとき、Databricks SQL UI キャッシュには、スケジュールされた実行の結果を含む最新のクエリ結果が表示されます。

    Databricks SQL UI キャッシュのライフサイクルは最大 7 日間です。 キャッシュはアカウントの Databricks ファイルシステム内にあります。 保存する必要がなくなったクエリを再実行することで、クエリ結果を削除できます。 再実行すると、古いクエリ結果がキャッシュから削除されます。 さらに、基になるテーブルが更新されると、キャッシュは無効になります。

  • 結果キャッシュ: SQL ウェアハウスを介したすべてのクエリのクエリ結果のクラスターごとのキャッシュ。 結果キャッシュには、ローカルとリモートの両方の結果キャッシュが含まれ、クエリ結果をメモリまたはリモートストレージメディアに格納することで、クエリのパフォーマンスを向上させます。

    • ローカル キャッシュ: ローカル キャッシュは、クラスターの存続期間中、またはキャッシュがいっぱいになるまでのいずれか早い方の期間、クエリ結果を保存するメモリ内キャッシュです。 このキャッシュは、反復的なクエリを高速化し、同じ結果を再計算する必要がなくなるのに役立ちます。 ただし、クラスターが停止または再起動されると、キャッシュが消去され、すべてのクエリ結果が削除されます。

    • リモート結果キャッシュ: リモート結果キャッシュは、クエリ結果をクラウド ストレージに永続化することで保持する、サーバレス専用のキャッシュ システムです。 そのため、このキャッシュは SQL ウェアハウスの停止または再起動によって無効になりません。 リモート結果キャッシュは、コンピュート リソースが実行されている間のみ利用可能なクエリ結果をメモリ内にキャッシュする際の一般的な問題点に対処します。 リモート キャッシュは、Databricks ワークスペース内のすべてのウェアハウスにわたる永続的な共有キャッシュです。

    リモート結果キャッシュにアクセスするには、ウェアハウスが実行されている必要があります。 クエリを処理するとき、クラスターはまずローカル キャッシュを調べ、次に必要に応じてリモート結果キャッシュを調べます。 クエリ結果がどちらのキャッシュにもキャッシュされていない場合にのみ、クエリが実行されます。 ローカル・キャッシュとリモート・キャッシュのライフサイクルはどちらも 24 時間で、キャッシュ・エントリーから始まります。 リモート結果キャッシュは、SQLウェアハウスを停止または再起動しても保持されます。 両方のキャッシュは、基になるテーブルが更新されると無効になります。

    リモート結果キャッシュは、ODBC / JDBC クライアントおよび SQL ステートメント API を使用したクエリで使用できます。

    クエリ結果のキャッシュを無効にするには、SQL エディターでSET use_cached_result = falseを実行します。

    重要

    このオプションは、テストまたはベンチマークでのみ使用してください。

  • ディスク キャッシュ: SQL ウェアハウスを介したクエリのためにデータ ストレージから読み取られたデータのローカル SSD キャッシュ。 ディスク キャッシュは、データをディスクに格納することでクエリのパフォーマンスを向上させ、データの読み取りを高速化できるように設計されています。 データは、ファイルがフェッチされると自動的にキャッシュされ、高速中間形式が使用されます。 コンピュート ノードに接続されたローカル ストレージにファイルのコピーを保存することで、ディスク キャッシュによってデータがワーカーの近くに配置されるようになり、クエリのパフォーマンスが向上します。 「Databricks のキャッシュによるパフォーマンスの最適化」を参照してください。

ディスクキャッシュは、その主要な機能に加えて、基になるデータファイルへの変更を自動的に検出します。 変更が検出されると、キャッシュは無効になります。 ディスク・キャッシュは、ローカル結果キャッシュと同じライフサイクル特性を共有します。 これは、クラスターが停止または再起動されると、キャッシュが消去され、再設定する必要があることを意味します。

クエリ結果のキャッシュとディスク キャッシュは、 Databricks SQL UIBI、およびその他の外部クライアントのクエリに影響します。