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.2.3 版本起,StarRocks 默认启用 Data Cache。如果您需要在 v3.1 版本集群中使用 Data Cache,或此前曾手动禁用了此功能,需执行以下流程启用 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
如果您在升级至 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 的指标。
Dashboard 模板
您可以根据您的 StarRocks 环境下载以下 Grafana Dashboard 模板: