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
です。例:
# `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
プロパティが特定の時間範囲に設定されている場合、その時間範囲 を超えるデータはキャッシュされません。- 共有データクラスタを v3.3 から v3.2.8 以前にダウングレードした後、Data Cache のキャッシュデータを再利用したい場合、ディレクトリ
starlet_cache
内の Blockfile のファイル名形式をblockfile_{n}.{version}
からblockfile_{n}
に変更し、バージョン情報のサフィックスを削除する必要があります。v3.2.9 以降のバージョンは v3.3 のファイル名形式と互換性があるため、この操作を手動で行う必要はありません。次のシェルスクリプトを実行して名前を変更できます:
#!/bin/bash
# Data Cache のディレクトリを <starlet_cache_path> に置き換えます。例:/usr/be/storage/starlet_cache。
starlet_cache_path="<starlet_cache_path>"
for blockfile in ${starlet_cache_path}/blockfile_*; do
if [ -f "$blockfile" ]; then
new_blockfile=$(echo "$blockfile" | cut -d'.' -f1)
mv "$blockfile" "$new_blockfile"
fi
done