OceanBase V4 中列存索引(Columnar Index)与列存表有什么区别?各适用什么场景?
列存表 :通过 BLOCK_FORMAT = COLUMN 创建,整张表以列式格式存储,增量数据仍为行存,基线数据在 Major Compaction 后转为列存。
- 适用场景:AP 型大宽表、全表扫描聚合查询、HTAP 混合负载中专门的 OLAP 表。
- 特点:整表列存,存储和查询路径完全列式化。
列存索引 :在行存表上创建的列式二级索引,通过 INDEX ... BLOCK_FORMAT = COLUMN 指定,仅索引列以列存格式存储,主表仍为行存。
- 适用场景:行存主表上的特定列需要高效聚合/过滤,但不想将整表转为列存;例如订单表(行存)上对
amount列建列存索引做 SUM/COUNT。 - 特点:选择性列存,兼顾 TP 写入性能与 AP 查询加速。
核心区别: 列存表是"整表列式化",列存索引是"部分列式化";前者适合纯 AP 场景,后者适合 TP 为主、局部 AP 加速的混合场景。