クエリのキャッシュ
キャッシングは、同じデータを何度も再計算またはフェッチする必要がなくなるため、データウェアハウスシステムのパフォーマンスを向上させるために不可欠な手法です。 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
を実行します。
このオプションは、テストまたはベンチマークでのみ使用してください。
- ディスク キャッシュ:SSD データ ストレージから読み取られたデータSQL ウェアハウスを介したクエリ用のローカル キャッシュ。ディスク・キャッシュは、データをディスクに格納することでクエリのパフォーマンスを向上させるように設計されており、データの読み取りを高速化できます。 データは、高速な中間形式を使用して、ファイルがフェッチされるときに自動的にキャッシュされます。 コンピュート ノードにアタッチされたローカル ストレージにファイルのコピーを格納することで、ディスク キャッシュはデータがワーカーの近くに配置されることを保証し、クエリのパフォーマンスが向上します。 「Databricks でのキャッシュによるパフォーマンスの最適化」を参照してください。
ディスク・キャッシュは、その主要な機能に加えて、基礎となるデータ・ファイルに対する変更を自動的に検出します。 変更を検出すると、キャッシュは無効になります。 ディスク・キャッシュは、ローカルの結果キャッシュと同じライフサイクル特性を共有します。 つまり、クラスターが停止または再起動されると、キャッシュはクリーンアップされ、再設定が必要になります。
クエリ結果のキャッシュと ディスク キャッシュ は、Databricks SQL UI と BI、およびその他の外部クライアントのクエリに影響します。