简介
缓存加载(Preload) 功能是ByteHouse云数仓的一种数据缓存优化机制,目的是提升查询性能。它将远程对象存储中的数据提前缓存到计算组的本地云盘中。缓存加载分为3个步骤:
- 数据预取:根据缓存策略将数据加载到缓存中,ByteHouse支持离线策略和实时策略两种。
- 离线策略:将周期性刷新存量数据到缓存中。
- 实时策略:将自动获取最新写入数据并加载到缓存。
- 缓存管理:ByteHouse云数仓对已缓存的数据进行监控和管理,当缓存空间不足时,根据数据的使用情况和重要性,自动淘汰一些不常用的数据,为新的需要缓存的数据腾出空间。
- 离线缓存策略:数据默认遵循您在创建缓存加载任务时设置的TTL(Time To Live,生存时间)进行数据缓存,当TTL内的数据大小大于缓存空间大小时,遵循LRU(Least Recently Used,最近最少使用)淘汰策略。
- 实时缓存策略:数据默认遵循LRU(Least Recently Used,最近最少使用)淘汰策略。
- 查询加速:用户执行SQL查询时,数据已经在计算组的本地云盘缓存中,可以直接快速读取数据,无需从对象存储中获取。这样大大减少数据读取时间,提升了查询性能,使查询结果更快返回给用户。
使用流程
从业务场景来看,缓存加载 和 智能缓存(智能缓存) 一般组合使用,来确保加载数据到缓存时,有足够的缓存空间来承载数据。整体的缓存加载使用流程如下:

适用场景
行业 | 业务场景 | 场景&功能适用性分析 |
---|
互联网&电商 | 实时监控用户行为、商品销售趋势、促销活动效果等,需要实时生成分析报告 | - 实时数据看板:通过实时缓存高频访问的销售数据(如近30天交易记录),将BI报表分析时效性从小时级压缩至秒级。
- 用户行为分析:预缓存用户行为日志(如点击、加购数据),支持实时路径分析和留存率计算,优化营销策略。
- 大促期间高并发查询:通过实时本地缓存减少远程存储访问,应对瞬时高负载的实时分析需求
|
游戏 | 实时处理游戏日志、玩家行为数据,支持运营决策和用户体验优化 | - 游戏日志实时分析:缓存高频查询的玩家在线时长、道具使用等数据,支撑运营团队快速响应异常情况(如外挂检测)。
- 直播互动分析:预加载直播间用户互动数据(如弹幕、礼物打赏),加速实时人气榜单生成。
- 广告投放效果评估:通过缓存历史投放数据,快速分析不同渠道的ROI,优化广告预算分配。
|
汽车 | 车联网设备(如传感器、GPS、摄像头等)实时生成车辆状态、驾驶行为、环境信息等。对这些数据快速处理分析,支持实时监控、故障诊断和用户服务 | - 历史数据加速:通过离线缓存策略,预加载高频访问的历史数据(如过去30天的驾驶行为数据),加速生成驾驶报告或用户行为分析。
- 查询加速:在生成驾驶评分、车辆健康报告或用户行为分析时,直接从本地缓存读取数据,减少远程存储访问的延迟。
|
功能说明
ByteHouse的缓存加载任务,将数据库存储中的数据预加载至各个计算组中,如下图所示。

缓存加载任务分为两种模式:实时写入任务、周期加载任务。对比介绍如下。
对比项 | 实时写入任务 | 周期加载任务 |
---|
加载任务说明 | 将最新写入的数据实时预加载到计算组缓存, 1 张表仅支持实时写入 1 个计算组。 | 将数据按周期加载到计算组缓存, 支持1 张表加载至多个计算组。 |
数据加载逻辑 | 有数据写入表中即会触发缓存加载任务,新写入的数据即会加载入缓存。 | 每天定时运行: - 分区表:
- 日期类型分区表:每次运行时刷新TTL周期内的分区增量数据。
- 非日期类型分区表:每次运行时刷新全表。
- 非分区表:每次运行时刷新全表。
|
注意事项
- 引擎版本需2.3及以上版本才可使用缓存加载功能。
说明
您可以在 租户管理>基本信息页面中查看当前使用的引擎版本。
- 缓存加载任务会将表数据缓存加载至计算组的缓存资源中,计算组会为您默认配置一定大小的缓存空间,您也可以打开计算组的智能缓存功能(增值功能)以获得更大的缓存资源空间,详情请参见智能缓存。
创建缓存加载任务
- 登录并进入ByteHouse 云数仓版本控制台后,单击顶部租户管理,进入缓存加载页面后,单击右上角的创建任务。

- 在弹出的页面中配置缓存加载任务。
配置基本信息。在界面中配置任务名称与描述。

加载配置。选择缓存加载的任务类型并配置任务详情。

参数 | 配置说明 |
---|
任务类型 | 当前支持实时写入和周期加载两种任务类型。 - 实时写入:将最新写入的数据实时预加载到计算组缓存, 1 张表仅支持实时写入 1 个计算组。
- 周期加载:将数据按周期加载到计算组缓存, 支持1 张表加载至多个计算组。
周期加载任务还需继续配置下方数据范围、加载时间等任务参数。 |
数据范围 | 配置周期加载任务的加载数据是最近多少天的任务。 |
加载时间 | 配置周期加载任务每天定时运行的时间。 |
时区 | 配置周期加载任务使用的时区。 |
立即加载 | 选择是否需要在周期任务创建完成后就立即启动一次加载任务。 |
配置加载对象。在下拉框中选择需要预加载的数据库、数据表,以及预加载写入的计算组。
说明
实时写入任务仅支持选择一个计算组,即实时写入任务仅支持将数据表预加载至一个计算组中。

查看缓存加载任务
对于周期任务,创建完成缓存加载任务后,您可以在缓存加载任务列表页单击查看任务状态,查看具体任务的运行状态。

在任务状态详情页面,您可以查看周期任务每天运行是否成功,可对每天的任务进行重试操作。

编辑缓存加载任务
您也可以在缓存加载任务列表页面对已创建的缓存加载任务进行编辑修改的操作。

缓存策略 | 编辑修改注意事项 |
---|
实时缓存策略 | - 增加或取消勾选需要加载至缓存的数据表时:
- 取消勾选数据表后,后续不会再将该表的数据缓存至计算组,此前已有的缓存数据会随缓存数据淘汰策略(LRU策略)逐步被删除;
- 新勾选的表,后续会遵循当前的缓存策略,将表数据缓存至计算组。
- 切换缓存数据的计算组时:
- 切换计算组后,后续数据即会缓存至新的计算组中,此前的计算组中的缓存数据会随缓存数据淘汰策略(LRU策略)逐步被删除。
|
离线缓存策略 | - 增加或取消勾选需要加载至缓存的数据表时:
- 取消勾选数据表后,后续不会再将该表的数据缓存至计算组,此前已有的缓存数据会随缓存数据淘汰策略(LRU策略)逐步被删除;
- 新勾选的表,后续会遵循当前的缓存策略,将表历史数据周期性加载至计算组。
- 增加或减少缓存数据的计算组时:
- 增加了新的计算组后,后续数据会缓存至新的计算组中。
- 减少计算组后,不会再有新的数据缓存至计算组中,历史缓存数据会随缓存数据淘汰策略(LRU策略)逐步被删除。
|
删除缓存加载任务
您也可以在缓存加载任务列表页面对已创建的缓存加载任务进行删除。

删除缓存任务后,已缓存的数据不会即刻被删除,后续会随淘汰策略(LRU策略)逐步被清理。
查看缓存监控
创建缓存任务后,您可以在租户管理 > 监控告警页面查看智能缓存的缓存利用率、缓存数据读写次数等指标数据,对智能缓存进行例行监控。

当前支持的智能缓存监控指标详情,以及通过火山引擎云监控创建监控告警的操作指导请参见监控告警。