Repository navigation
Release v0.2.2
RowPack v0.2.2
本版本是一次全链路性能与内存优化批次(16 个提交)。磁盘格式完全兼容:文件布局、版本号均未变更(仅 zstd 帧省去 4B 冗余校验),新旧版本双向可读,升级无需任何数据迁移。
性能提升(vs v0.2.1,同机交错实测)
| 场景 | 变化 |
|---|---|
| IndexTxn 损坏重建(Open 恢复路径) | 延迟 -32~38%,内存 -66~80%,分配次数 -38~64% |
| Scan 全表扫描(12 格矩阵) | -3~9%,百万行扫描 -3.6~5.4% |
| 冷读(跨块读,6 格矩阵) | -0.6~9%,1000 次循环点读 -9.2% |
| 随机读 100 万行 | -0.5~10.4% |
| Open 重放 | 单项延迟 -11.7%,分配次数 -4.6%;100 个 DELTA 快照场景 Open -20% 延迟 / -26% 分配 |
| 加密热读 | -6.9%,内存 -5.9% |
| 写路径 | 延迟持平,提交内存 -9% |
内存优化
- 提交路径流式化:消除 Commit 峰值 ~100B/行的四层中间物化,100 万行事务的瞬时峰值显著下降
- 恢复重建流式化:峰值从 ~125B/行 降至 24B/行
- 快照元数据:删除 O(深度²) 的预计算祖先链存储(4096 深度上限下可达数十 MB),改为 Apply 时父指针直连(+8B/快照);schema 派生跨快照共享,纯插入 DELTA 链不再重复分配
- metadata 主索引改排序值切片;transient 页遍历(全库校验)接通缓冲池,Verify 分配 -20%;Verify 不再把全库块灌进读缓存冲掉热集
其他
- 全库
golangci-lint0 issues,race 检测通过 - 新增性能基线归档(
testdata/baseline/)与回归测试锁定关键行为
兼容性
- 磁盘格式不变,未提升格式版本;zstd 帧内容校验移除后,旧版本引擎写入的文件(带校验帧)仍可正常读取,反之亦然(有双向兼容回归测试锁定)
Full Changelog: v0.2.1...v0.2.2