1. StarRocks 的主键模型(Merge-on-Write 标记删除)相比其他模型在实时更新上的优势?
StarRocks 主键模型(Merge-on-Write 标记删除)相比其他模型在实时更新场景有什么优势?实现原理是什么?
- 写时标记删除(Merge-on-Write)原理
- 与 MOR 模型的查询差异
- 实时更新场景的收益与代价
StarRocks 主键模型(Primary Key 表)采用 Merge-on-Write 语义:写入新数据时通过持久化主键索引(Persistent Index,索引存磁盘并有内存缓存)定位旧版本,同时写入新行并标记旧行删除,查询时只读最新版本,无需在查询期合并多个版本。相比 MOR(如 Doris Unique 早期实现),主键模型的查询延迟稳定、不受版本数影响,实时高频 upsert 后数据立即可见。
优势:实时更新(订单状态、用户余额等)场景写入即查询正确;支持部分列更新与条件更新;高并发点查与报表查询性能稳定。代价:每次写入需要定位并标记旧行,有额外的索引查询与删除标记开销,写入放大略高于纯追加;持久化主键索引占用一定磁盘与内存。选择:更新不频繁且查询少用主键的用 Unique/Duplicate,高频实时更新加高并发查询用主键模型。
优势核心是"写时标记删除、读时无合并",回答对比 MOR 讲清查询收益与写入代价,并给出适用边界。