Data Cache
v3.1.7 および v3.2.3 以降、StarRocks は共有データクラスタにおけるクエリを高速化するために Data Cache を導入し、以前のバージョンでの File Cache を置き換えました。Data Cache は必要に応じてリモートストレージからデータをブロック単位(MB 単位)でロードしますが、File Cache は必要なデータ行の数に関係なく、毎回バックグラウンドでデータファイル全体をロードします。
File Cache と比較して、Data Cache には以下の利点があります:
- オブジェクトストレージからの読み取りが少なく、オブジェクトストレージへのアクセスコストが削減されます(オブジェクトストレージがアクセス頻度に基づいて課金される場合)。
- ローカルディスクへの書き込み圧力と CPU 使用率が低下し、他 のロードやクエリタスクへの影響が少なくなります(バックグラウンドでのロードスレッドが不要になるため)。
- キャッシュの効果が最適化されます(File Cache はファイル内のあまり使用されないデータをロードする可能性があります)。
- キャッシュされたデータの制御が最適化され、File Cache によって削除されなかった過剰なデータによるローカルディスクの圧迫を回避します。
Data Cache の有効化
v3.2.3 以降、Data Cache はデフォルトで有効になっています。v3.1 クラスタで Data Cache を使用したい場合、または以前にこの機能を手動で無効にした場合は、以下の手順を実行して有効にする必要があります。
実行時に Data Cache を動的に有効にするには、次のステートメントを実行します:
UPDATE information_schema.be_configs SET VALUE = 1
WHERE name = "starlet_use_star_cache";
動的な設定は CN ノードが再起動されると無効になります。
Data Cache を永続的に有効にするには、次の設定を CN 設定ファイル cn.conf に追加し、CN ノードを再起動する必要があります:
starlet_use_star_cache = true
Data Cache の設定
次の CN(BE) 設定項目を使用して Data Cache を設定できます:
- storage_root_path (共有データクラスタでは、キャッシュされたデータが保存されるルート パスを指定するために使用されます。)
- starlet_use_star_cache
- starlet_star_cache_disk_size_percent
StarRocks クラスタを v3.1.7、v3.2.3、またはそれ以降のバージョンにアップグレードする前に File Cache を有効にしていた場合、設定項目 starlet_cache_evict_high_water を変更したかどうかを確認してください。この項目のデフォルト値は 0.2 で、File Cache がストレージスペースの 80% を使用してキャッシュデータファイルを保存することを示しています。この項目を変更した場合、アップグレード時に starlet_star_cache_disk_size_percent を適切に設定する必要があります。例えば、以前に starlet_cache_evict_high_water を 0.3 に設定していた場合、StarRocks クラスタをアップグレードする際に starlet_star_cache_disk_size_percent を 70 に設定して、Data Cache が File Cache に設定したのと同じディスク容量の割合を使用するようにする必要があります。
Data Cache のステータスを確認
-
Data Cache が有効かどうかを確認するには、次のステートメントを実行します:
SELECT * FROM information_schema.be_configs
WHERE NAME LIKE "%starlet_use_star_cache%"; -
キャッシュされたデータが保存されてい るルートパスを表示するには、次のステートメントを実行します:
SELECT * FROM information_schema.be_configs
WHERE NAME LIKE "%storage_root_path%";キャッシュされたデータは、
storage_root_pathのサブパスstarlet_cache/star_cacheに保存されます。 -
Data Cache が使用できるストレージの最大割合を表示するには、次のステートメントを実行します:
SELECT * FROM information_schema.be_configs
WHERE NAME LIKE "%starlet_star_cache_disk_size_percent%";
Data Cache の監視
StarRocks は Data Cache を監視するためのさまざまなメトリクスを提供します。
ダッシュボードテンプレート
StarRocks 環境に基づいて、以下の Grafana ダッシュボードテンプレートをダウンロードできます:
重要なメトリクス
fslib read io_latency
Data Cache の読み取り遅延を記録します。
fslib write io_latency
Data Cache の書き込み遅延を記録します。
fslib star cache meta memory size
Data Cache の推定メモリ使用量を記録します。
fslib star cache data disk size
Data Cache の実際のディスク使用量を記録します。
Data Cache の無効化
実行時に Data Cache を動的に無効にするには、次のステートメントを実行します:
UPDATE information_schema.be_configs SET VALUE = 0
WHERE name = "starlet_use_star_cache";
動的な設定は CN ノードが再起動されると 無効になります。
Data Cache を永続的に無効にするには、次の設定を CN 設定ファイル cn.conf に追加し、CN ノードを再起動する必要があります:
starlet_use_star_cache = false
キャッシュデータのクリア
緊急時にはキャッシュデータをクリアすることができます。これにより、リモートストレージ内の元のデータには影響しません。
CN ノード上でキャッシュデータをクリアする手順は以下の通りです:
-
データを保存しているサブディレクトリを削除します。つまり、
${storage_root_path}/starlet_cacheです。例:
# Suppose `storage_root_path = /data/disk1;/data/disk2`
rm -rf /data/disk1/starlet_cache/
rm -rf /data/disk2/starlet_cache/ -
CN ノードを再起動します。
使用上の注意
- クラウドネイティブテーブルに対して
datacache.enableプロパティがfalseに設定されている場合、そのテーブルに対して Data Cache は有効になりません。 datacache.partition_durationプロパティが特定の時間範囲に設定されている場合、その時間範囲を超えたデータはキャッシュされません。