1. B-Tree vs LSM 的取舍,写少读多 vs 写多读多?
B-Tree vs LSM 的取舍是什么?写少读多 vs 写多读多?
- B-Tree 特点
- LSM 特点
- 读写权衡
B-Tree 与 LSM 的取舍:B-Tree 就地更新、读快(点查 O(log n)),但随机写需多次页 IO 与页分裂,写放大高,适合"读多写少"(如 OLTP、关系库)。LSM(Log-Structured Merge Tree)顺序写、写快(append 到 WAL + MemTable),但读需合并多级,读放大,适合"写多读少"(如时序、日志、KV 存储)。取舍:写少读多(点查多)用 B-Tree,写多读多(写入为主、容忍读成本)用 LSM。现代系统按负载选择。
B-Tree 读优写弱,LSM 写优读弱。选择取决于读写比例与查询模式。
-- 关系库(B-Tree):读多写少
-- LSM 引擎(RocksDB/LevelDB):写多场景