存储引擎概述
存储引擎是数据库系统的存储基座,数据库基于存储引擎进行数据的创建、查询、更新和删除等操作。根据你的需要,不同的存储引擎将提供不同的存储机制,并可与不同的执行引擎组合成为适用于特定场景的数据库微内核。
目前 YMatrix 数据库系统支持几种存储引擎的使用:
- 基于 PostgreSQL 的 HEAP
- AORO(Append-optimized)
- YMatrix 自研发的 MARS3
一表速览
| 存储引擎 |
适用场景 |
存储格式 |
压缩 |
锁定粒度 |
update/delete |
| HEAP |
OLTP 类型业务 |
行存 |
仅能针对部分「大字段」做轻量级单独压缩 |
行锁 |
支持 |
| AORO |
OLAP 类型业务 |
行存 |
表级别压缩 |
表锁 |
支持 |
| MARS3 |
OLAP/时序类型业务 |
行列混存 |
按列压缩 |
行锁 |
支持 |
MARS3 存储引擎(Matrix Append-optimized Resilient Storage 3)
MARS3 存储引擎是 YMatrix 专为数据高速加载与查询设计的存储引擎。支持列存、行列混存两种模式,内部采用 LSM Tree(日志结构合并树)存储结构 —— 数据先以行存形式写入,积累到一定量后自动转换为列存(可通过 prefer_load_mode 参数配置)。
核心能力
- 行列混存自适应:行存模式插入更快、内存消耗低;列存模式仅读取所需列,减少 I/O,搭配向量化执行引擎提升查询速度。
- 高压缩率:支持高效数据压缩,大幅降低存储成本。
- 完整 DML 支持:可通过 UPDATE、DELETE 语句实现数据更新与删除(Unique Mode 模式除外),支持增删列、COPY、pg_dump 等操作。
- 多场景适配:同时满足分析型查询、事务处理、时序数据存储需求。
场景适用
- 复杂多维分析与实时事务并存的场景(如财务系统、业务中台);
- 数据量庞大、需平衡写入效率与查询性能的场景;
- 需频繁进行数据更新、调整的业务(如凭证更正、数据补录)。
注意事项
- 排序键只能指定一次,不能修改,不能新增,不能删除。
AORO(Append-Only Row-Oriented)
AORO 是一种面向分析型数据库的存储组织范式,指数据以仅追加(append-only)方式按行连续写入,不支持原地更新或删除,通过时间戳或事务 ID 维护版本,兼顾写入吞吐、查询效率与 MVCC 一致性。
核心特性
- 支持表级压缩,适合 AP 型明细查询;
- 支持逻辑增量备份。
适用场景
- 大量写入、明细查询较多但更新删除少的场景(如日志存储、数据采集临时存储)
注意事项
- 不适合频繁更新 / 删除的业务;
- 无法按列压缩,压缩效果有限,单字段聚合场景查询需要整行读取IO利用率较低。
HEAP 存储引擎
核心特性
- 传统行式存储,完全兼容 PostgreSQL 存储方式;
- 支持随机读写和完整事务功能;
- 无数据压缩,存储空间占用较大。
适用场景
- OLTP 系统、事务密集型应用(如订单实时处理、用户信息管理);
- 需频繁进行随机读写、事务一致性要求高的场景;
- 迁移自 PostgreSQL 且需保持兼容性的业务。
注意事项
- 分析性查询需整行读取,IO 利用效率较低,不适合大规模数据分析场景。