_out.log 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. ============================================================
  2. TsDB2 Hash 桶式索引 — 完整测试
  3. 覆盖: CRUD/分页/桶分裂(Split)/桶合并(Merge)/持久化/性能
  4. ============================================================
  5. ========== 1. 建表 + 自动索引
  6. ✅ UseTable[Record] 建表 (自动创建索引)
  7. ✅ idx_hash_age (Hash) 已自动创建
  8. ========== 2. 大批量插入 (3000 行, 触发多页)
  9. ✅ 插入 3000 行 耗时 0.14s (21873 rows/s)
  10. ✅ Commit 持久化
  11. ✅ Hash 查找: 100/100 个 Age 值可查
  12. ✅ PK 查找 ID=100
  13. ✅ 行数: 3000 (应=3000)
  14. ========== 3. 桶分裂测试 (Split)
  15. 集中插入 1000 行 Age=25 (全部 hash 到同一桶, 阈值=800)...
  16. ✅ 集中插入 1000 行 耗时 0.06s
  17. ✅ 分裂后 Hash 查找 Age=25
  18. ✅ 分裂后 Hash 查找: 100/100 个 Age 值可查
  19. ✅ 分裂后 PK 查找
  20. ✅ 分裂后行数: 4000 (应=4000)
  21. ========== 4. Hash 索引删除测试
  22. ✅ 删除 500 行 (ID 1~500)
  23. ✅ 删除后 PK 查找 ID=1 (应不存在)
  24. ✅ 删除后 PK 查找 ID=501 (应存在)
  25. ✅ 删除后 Hash 查找 Age=25
  26. ========== 5. 桶合并测试 (Merge)
  27. ✅ 删除 3500 行
  28. ✅ 剩余行数: 0 (已删除全部 4000 行)
  29. ✅ 合并后 Hash 索引不崩溃
  30. ========== 6. 持久化 + 重开验证
  31. ✅ 关闭数据库
  32. ✅ 重开 UseTable[Record]
  33. ✅ 重开后行数: 0 (应=0)
  34. ========== 7. 性能对比: Hash vs B+树
  35. 插入 5000 行: 0.30s (16615 rows/s)
  36. Hash 查找 1000 次: 0.021s (47193 qps)
  37. B+树 查找 1000 次: 0.027s (37297 qps)
  38. ✅ Hash/B+树 性能比: 1.27x
  39. ========== 测试总结
  40. 总计: 23 项测试, ✅ 通过: 23, ❌ 失败: 0
  41. 🎉 全部通过!Hash 桶式索引工作正常!