perf(P1): 批量插入性能悬崖 — insert 循环内逐行 prefetchKeys(每行 await drainChain 排空后台链),compaction 在链上数秒时每行阻塞数秒 → kv 后端 10 万行插入 353s;改为批级预加载本批 PK 一次,实测 353s→12.5s(28 倍)/ opfs 25s;新增 kv/opfs 双后端 10 万行回归(性能护栏+索引完整+崩溃恢复),aria-cache 测试同步适配显式 flush
CI / test (18.x) (push) Successful in 18m51s
CI / test (20.x) (push) Successful in 17m42s
CI / test (22.x) (push) Successful in 16m58s
CI / test (24.x) (push) Failing after 14m38s
CI / e2e (push) Successful in 10m36s

This commit is contained in:
thzxx
2026-08-10 20:14:57 +08:00
parent 34225a86b3
commit d83910832e
4 changed files with 97 additions and 1 deletions
+4
View File
@@ -45,10 +45,14 @@ describe('AriaEngine SSTable 缓存内存上限', () => {
await engine.insert('users', makeRows(300));
const lsm = (engine as any).lsm as {
flush(): Promise<void>;
getCacheSize(): number;
getCacheLimit(): number;
getStats(): { sstableCount: number };
};
// v0.6.1-perf: insert 不再隐式排空后台链(逐行 prefetchKeys 已移除),
// 显式等待后台 flush 完成后再断言 SSTable 产物
await lsm.flush();
const stats = lsm.getStats();
// 300 行 / 2KB 阈值 → 应产生多个 SSTable
expect(stats.sstableCount).toBeGreaterThan(1);