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