Doris 存储格式 V3 是在 Segment V2 格式基础上进行的重大演进。它通过元数据解耦与编码策略优化,专门针对大宽表、复杂数据类型(如 Variant)以及云原生存算分离场景提升性能。
ColumnMetaPB)都存储在 Segment 文件的 Footer 中。对于拥有数千列的大宽表或自动扩容的 Variant 场景,Footer 可能会膨胀到几 MB。ColumnMetaPB 从 Footer 中剥离,转而存储在文件内的独立区域(External Column Meta Area)。INT, BIGINT)切换为 PLAIN_ENCODING(原始二进制存储),而非传统的 BitShuffle。PLAIN_ENCODING 提供了更高的读取吞吐量和更低的 CPU 开销。在现代高速 IO 环境下,这种“解压换性能”的策略在扫描大体量数据时优势明显。BINARY_PLAIN_ENCODING_V2,采用 [长度(varuint)][原始数据] 的流式布局,取代了依赖末尾偏移表(Offsets)的旧格式。V3 的设计哲学可以总结为:“元数据解耦、编码简化、流式布局”。通过减少元数据处理瓶颈和利用现代 CPU 对简单编码的高处理效率,实现在复杂模式下的高性能分析。
VARIANT, 且物化列数超过2000列。在建表语句的 PROPERTIES 中指定 storage_format 为 V3:
CREATE TABLE table_v3 ( id BIGINT, data VARIANT ) DISTRIBUTED BY HASH(id) BUCKETS 32 PROPERTIES ( "storage_format" = "V3" );