2022-09-22 顺序IO与随机IO

1.磁盘IO

https://tech.meituan.com/2017/05/19/about-desk-io.html

PageCache BufferCache

2.顺序IO与随机IO

https://www.zhihu.com/question/370950509

BTrees

写:将要写的block加载到内存,然后更新放回PageCache或者同步刷盘;当要写的数据位于不同block时,就涉及多个页,需要随机写

读:首先加载根节点对应的block,然后不断找对应的子节点,每次换页都需要加载对应的数据到内存,但是整体几乎是顺序读,对范围查询友好

LSM+SSTable

写:先写到memtable,然后到达阈值写到磁盘(这是一整块写,顺序写就够了),多个SSTable的合并会造成读写放大,但是合并相当于两段有序数据的合并,时间复杂度是o(n)

读:先判断在不在内存的memtable,取决于内存的数据结构一般很快;不在的话,按照层级去读SSTable,先读Footer,得到Index和Filter,利用Filter过滤不存在的大部分情况,剩下的数据通过Index找到区间,然后读出相关数据;SSTable是允许key重复的,利用时间的most recent原则拆分数据

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容