知识卡片

LSM树用写内存加WAL替代随机写

普通读书笔记卡

内容

KV存储Key无序到达,但磁盘需按Key有序存储,不可能每次插入都重排序。LSM树解法和[[Write-Ahead日志的本质]]同构:先在内存维护有序结构,插入只写一条WAL加一次内存操作即返回,后台任务定期把内存数据合并排序进磁盘。此思路可复用到业务层:高并发扣库存先在Redis扣减同时落日志,宕机后重放恢复。发散:”先写廉价顺序日志、整理延后批量做”的关键约束是日志不能无限积压。

参考来源

- 位置:第8章《高并发问题》「案例4:LSM树(写内存+Write-Ahead日志)」(源文件:_epub-src/text/part0040.html) - 结论依据:原文明确说明LSM树核心思想是异步写:在内存维护Sorted HashMap、写一条Write-Ahead日志(顺序写)即可返回成功,后台任务定期把内存数据合并进磁盘;此思路可复用到业务层如Redis扣库存+落日志,直接支持卡片论述。 - 原始内容:"在内存中维护一个Sorted HashMap……再写一条日志,也就是Write-Ahead日志……后台任务定期地把内存中的Sorted HashMap合并到磁盘文件中……写内存+Write-Ahead日志的这种思路不仅在数据库和KV存储领域使用,在上层业务领域中同样可以使用。比如高并发地扣减MySQL中的账户余额……可以在Redis中扣,同时落一条日志。"