Data Cache
自 StarRocks v3.1.7 和 v3.2.3 版本起,StarRocks 引入 Data Cache 功能用以加速存算分离集群中的查询。该功能将取代早期版本中的 File Cache 功能。Data Cache 以 Block(MB 级别)为单位,按需从远端存储中加载数据。相较之下,File Cache 无论查询需要读取多少数据,都需要在后台线程加载整个数据文件。
相比 File Cache,Data Cache 具有以下优势:
- 可以减少对对象存储的读取,从而降低访问对象存储的成本(假设对象存储服务按访问频率收费)。
- 无需后台加载线程,可以降低对本地磁盘的写入压力和 CPU 使用率,从而减少对其他写入或查询任务的影响。
- 可以优化有效缓存率(因为 File Cache 会加载文件中不常用的数据)。
- 提供更精确的缓存控制能力,避免了 File Cache 淘汰缓存不及时导致磁盘被写满的状况。
启用 Data Cache
自 v3.4.0 版本起,StarRocks 存算分离内表和数据湖查询使用同一个 Data Cache 实例。
配置 Data Cache
您可以 通过以下 CN(BE)配置项配置 Data Cache:
缓存路径
- storage_root_path(在存算分离集群中,此项用于指定用于缓存数据的根路径。)
缓存使用磁盘容量
存算分离集群的缓存使用磁盘容量会取 datacache_disk_size
和 starlet_star_cache_disk_size_percent
中的较大值。
查看 Data Cache 状态
-
执行以下语句查看存储缓存数据的根路径:
SELECT * FROM information_schema.be_configs
WHERE NAME LIKE "%storage_root_path%";通常,缓存数据存储在
storage_root_path
的子路径datacache/
下。 -
执行以下语句以查看 Data Cache 的磁盘使用上限:
SELECT * FROM information_schema.be_configs
WHERE NAME LIKE "%starlet_star_cache_disk_size_percent% or %datacache_disk_size%";
监控 Data Cache
StarRocks 提供了多种监控 Data Cache 的指标。
Dashboard 模板
您可以根据您的 StarRocks 环境下载以下 Grafana Dashboard 模板:
有关为 StarRocks 部署监控和警报服务的更多说明,请参考 监控报警。
重要指标
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,需要将以下配置项添加到 CN 配置文件 cn.conf 中,并重新启动 CN 节点:
datacache_enable = false
storage_root_path =
清除缓存数据
在紧急情况下,您可以清除缓存数据。此举不会影响远程存储中的原始数据。
按照以下步骤清除 CN 节点上的缓存数据:
-
删除存储缓存数据的子目录。
示例:
# 假设 `storage_root_path = /data/disk1;/data/disk2`
rm -rf /data/disk1/datacache/
rm -rf /data/disk2/datacache/ -
重启 CN 节点。