| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- ============================================================
- TsDB2 大数据压力测试 (50万行 Employee + 10万行 Order)
- 覆盖: 批量插入/多索引/事务/WAL/条件查询/排序/聚合/持久化
- ============================================================
- ================================================== 1. 打开数据库
- ✅ OpenDB
- 配置: BufferPool=2000页(32MB), DirtyThreshold=500页
- [初始状态] 磁盘: 0.0MB | Go堆=1.0MB Sys=6.3MB
- ================================================== 2. 建表 + 多索引
- ✅ UseTable[Employee]
- ✅ 索引: pk_employee + idx_age + idx_dept + idx_score (标签自动创建)
- ✅ UseTable[Order]
- ✅ 索引: pk_order + idx_status + idx_userid (标签自动创建)
- ================================================== 3. 批量插入 Employee (50万行)
- [100000行] 耗时: 5.0s | 磁盘: 30.7MB | Go堆=5.6MB Sys=73.2MB
- [200000行] 耗时: 10.9s | 磁盘: 54.0MB | Go堆=11.5MB Sys=81.2MB
- [300000行] 耗时: 22.7s | 磁盘: 79.6MB | Go堆=13.8MB Sys=81.5MB
- [400000行] 耗时: 41.4s | 磁盘: 101.9MB | Go堆=12.5MB Sys=81.5MB
- [500000行] 耗时: 61.0s | 磁盘: 124.1MB | Go堆=13.4MB Sys=81.7MB
- ✅ 插入 500000 行耗时: 61.00s (8196 rows/s)
- ================================================== 4. Commit (WAL 持久化)
- ✅ DB.Commit()
- Commit 耗时: 0.071s | 磁盘: 124.1MB | Go堆=29.8MB Sys=81.7MB
- ================================================== 5. 批量插入 Order (10万行)
- ✅ 插入 100000 行 Order 耗时: 3.87s (25845 rows/s)
- ✅ Order Commit
- 磁盘: 132.1MB | Go堆=12.5MB Sys=81.7MB
- ================================================== 6. 主键精确查找 (性能)
- ✅ 6 次主键查找 耗时: 0.0000s (+Inf finds/s)
- ================================================== 7. 条件查询 (二级索引)
- ✅ WHERE Age=25: 10000 行, 耗时: 0.121s
- ✅ WHERE Dept='Engineering': 62500 行, 耗时: 0.508s
- ✅ WHERE Score>900: 49500 行, 耗时: 0.611s
- ✅ WHERE Age>=30 AND Age<=40: 110000 行, 耗时: 0.962s
- ================================================== 8. 排序 + 分页
- ✅ ORDER BY Score DESC LIMIT 10, 耗时: 1.088s
- Top3: Score=999, 999, 999
- ✅ ORDER BY Age ASC OFFSET 10000 LIMIT 100, 耗时: 0.898s
- ================================================== 9. 聚合查询
- ✅ COUNT(*): 500000, 耗时: 0.289s
- ================================================== 10. 事务: 批量插入 + 提交
- ✅ 事务插入 10000 行 + Commit, 耗时: 0.71s
- ✅ 验证: ID=500001 存在 (Name=Txn0500001)
- ================================================== 11. 事务: 回滚
- 事务内插入 5000 行
- ✅ Transaction.Rollback()
- ================================================== 12. 更新 + 删除 (大批量)
- ✅ 更新 Score>950 → 9999: 25480 行, 耗时: 7.592s
- ✅ 删除 Dept='Legal' 前100行: 100 行, 耗时: 3.534s
- ✅ 验证 Delete(7) 成功
- ✅ 更新+删除后 Commit
- ================================================== 13. 关闭 + 重开验证持久化
- 关闭前磁盘: 143.1MB
- ✅ DB.Close()
- ✅ 重新打开数据库
- ✅ 重开后 COUNT: 509900 (期望 509900, 事务已持久化)
- ✅ 重开后 Find(951): Score=9999 (更新持久化)
- ✅ 重开后回滚数据不存在
- 重开后磁盘: 143.1MB | Go堆=1.3MB Sys=326.8MB
- ================================================== 14. 全量扫描验证
- ✅ 全量扫描: 509900 行, 耗时: 0.69s (737905 rows/s)
- ================================================== 15. Order 表验证
- ✅ Order COUNT: 100000
- ✅ Order WHERE Status=0: 20000 行
- ============================================================
- 测试结果: 32 通过, 0 失败
- 数据量: Employee=500000 + Order=100000
- 磁盘大小: 143.1MB
- Go堆=9.1MB Sys=326.8MB
- 🎉 全部通过!
- ============================================================
|