图灵术-数据库索引优化学术
1 背景
- 对于数据库 使用索引 性能存在问题,所以 学术界开启了一波屠龙术
2 优化点
2.1 blinnk_tree
使用非叶子结点 向右链接数据
- 问题 : smo 锁住整棵树
2.2 bw-tree
- 微软 document db 和 azure cosmos db
主要为了实现 arss 自动记录
使用 page id -> page value 做成一个map ,
page 使用 page base + page mod 作为记录链表 对于 btree 的分裂吧操作变成原子操作
把传统的checkpoint 刷page. 通过 log struct storage 进行刷盘 把随机写变成顺序写
2.3 masstre
分层 b+数
每一层 分 8整数个 tree 相当于 log8 log2 N
2.4 LSM-Tree 数据库
- leveldb rocksdb
使用 wal 先写日志 ,先写log 然后内存维护 一个 memtable 刚开始可以变 ,然后达到一定大小 就变成了 不可变 table ,然后 转换到 l1 进行 minor compation , 然后 l1 满了 转换到 l2 l2 有序 major compation
注意 l2 以下的合并直接 使用 merge sort 和
- 读取过程
读取 每层的 level
写入牛逼 读取垃圾 , compation 时候会使系统性能断崖式下跌
不摸着石头过河,难道要在温柔乡睡到天昏地暗。