| 12345678910111213141516171819202122232425262728293031 |
- package index
- import (
- "git.ycl.pub/yl32940/TsDB2/DB/core/index/btree"
- "git.ycl.pub/yl32940/TsDB2/DB/core/page"
- )
- // BTreeHandler — B+ 树二级索引 (IndexTypeBTree)
- // 叶子条目: [key(keyLen) + PKID(8B BE)]
- // IndexHandler 的 9 个方法与 InsertBatch 全部由嵌入的 sbtSecondary 基座提供
- // (与 ComposeChainHandler 共享同一份 SBT 委托实现)。
- type BTreeHandler struct{ sbtSecondary }
- func init() {
- Compose.RegisterHandler(page.IndexTypeBTree, &BTreeHandler{})
- // 向后兼容:旧数据库中 IndexTypeStr=3 的索引统一用 BTreeHandler 处理
- Compose.RegisterHandler(page.IndexTypeStr, &BTreeHandler{})
- // 二级 B+ 树分裂参数 —— 写死在本文件, 不随索引元数据传递。
- // 二级键分布随机且允许重复, 对半分(50)时平均填充率最高, 故保持 50/50。
- btree.SBTSplitCfg = btree.SplitConfig{SplitPercent: 50, SequentialRight: false}
- }
- // SearchAll 查找相同 key 下的所有 pkID
- func (h *BTreeHandler) SearchAll(handle page.HandleDb, entryPage uint32, indexKey []byte, keyLen int) ([]uint64, bool) {
- rootPID := entryPage
- if rootPID == 0 {
- return nil, false
- }
- return btree.SBTSearchAll(rootPID, indexKey[:keyLen], handle)
- }
|