首批通过分布式安全可靠测评,为关键业务系统打造
自定义数据冷热存储策略概述
更新时间:2026-07-15 15:16:39
OceanBase 数据库共享存储模式下,全量数据会存储在成本较低的对象存储上,经常访问或者正在使用的热数据会尽量缓存在本地存储,来加速业务查询;对于明确不会访问的数据,可以定义为冷数据存储在对象存储上,相应的数据将不会被缓存到本地存储,避免挤占缓存空间。缓存热数据是一种优化存储成本和数据库性能的方法,默认情况下,系统会根据数据的访问频率以及结合数据的生成时间动态缓存热数据(高频访问的数据)和淘汰冷数据(低频访问的数据),但是对于查询敏感的业务来说,利用系统自动识别冷热数据,具有不可预期性,在查询时可能会造成 RT 抖动。
对于数据有明显冷热的业务场景,如时序业务,可以通过自定义数据的冷热策略,用户基于业务特性(如时间分界)直接定义热数据范围,解决自动冷热识别的局限性,提升性能可预期性。通过提前将业务的热数据缓存在本地存储上,避免查询时出现 RT 抖动的现象。
适用场景
- 时间敏感型业务:如只需要查看近期数据的业务。
- RT 稳定性要求高业务:对于频繁访问的范围内数据查询延迟敏感。
数据缓存机制
数据属性类型:
HOT:数据为热数据,会尽量缓存在本地,在本地存储容量允许的情况下,热数据会全部缓存在本地。AUTO:基于数据访问频率系统自动进行数据冷热识别并动态预取缓存。COLD:数据为冷数据,不会缓存到本地缓存盘,对于已经持久化到缓存的数据会主动触发缓存淘汰,后续访问的表数据可以存储在宏块内存缓存,不会持久化到宏块缓存和微块缓存。NONE:继承上级实体(如主表)的冷热缓存策略,如局部索引的缓存策略为NONE,表示动态继承主表的策略。说明
数据的冷热存储策略跟随上一级的
STORAGE_CACHE_POLICY取值时:- 二级分区的上一级是一级分区。
- 一级分区的上一级是表级。
- 索引表的上一级是主表。
优先级机制:
- 用户指定的热数据优先级高于自动识别的热点数据。
冷热存储策略支持情况
OceanBase 数据库在共享存储模式下支持通过 SQL 语句自定义冷热存储策略:
- 支持创建表(用户表/索引表)时指定表级、分区级冷热存储策略(
STORAGE_CACHE_POLICY)的功能。 - 支持修改表(用户表/索引表)的表级、分区级冷热存储策略(
STORAGE_CACHE_POLICY)的功能。
- 支持创建表(用户表/索引表)时指定表级、分区级冷热存储策略(
OceanBase 数据库提供配置项设置全局的冷热存储策略:
- 配置默认的缓存策略 default_storage_cache_policy。
- 启用用户自定义的冷热存储策略 enable_manual_storage_cache_policy。
- 设置是否暂停后台缓存任务 suspend_storage_cache_task。
OceanBase 数据库提供视图查看缓存策略:
- 展示各租户在当前 OBServer 节点上的整体缓存情况 V$OB_TABLET_LOCAL_CACHE。
- 展示各租户在当前 OBServer 节点上的缓存任务信息 V$OB_STORAGE_CACHE_TASKS。