对文件一边读一边写的应该场景中,我们一般采用dirty list来提高写的速度,dirty list在一些数据库的设计实现里(),是作为LeastUsed Write(LRUW)来使用的,即将用户新写入的值临时保存在内存中,提交时将dirty list中的数据一次性写入文件或db中 。内存中的dirty list在未写入文件或db时,对于用户的读取操作也是可见的 。
保存在dirty list中的数据单元一般为块数据,固定字节大小 。有dirty list的读取流程图如下,其中free list是干净的数据列表,可以采用各种讨论算法保证列表数量的稳定,如FIFO,LRU等等 。inuse list是目前正在使用的对象列表,起一个过渡的作用,读操作的示意图如下:
文章插图
读或者写操作结束后,均需要释放块数据,根据块数据是否被写脏,需要执行不同的操作,如果写脏了(包括之前就是脏数据),需要放到dirty list里,没有写脏,放到free list里 。
写操作基于上面的两个操作:
文章插图
【dirty list机制分析】最终的时候,将dirty list里的数据一次性写入文件或db即可 。
- 详解双缓冲绘图机制 HTML5-canvas绘图黑屏白屏解决方案
- 【iOS】自定义cell及其复用机制
- Java类加载机制:从字节码到对象的奇妙之旅
- 公司淘汰机制怎么做,想了解新鸿儒销售淘汰机制?
- 世界三大手机制造商,世界三大跑车制造商
- 论文|AGREE-基于注意力机制的群组推荐
- 使用<stdarg.h>实现可变参数,av_list的使用
- 仁王同行,《仁王》联机机制介绍
- Android 操作系统的内存回收机制
- 债市冲击波:巨额赎回引发债基精度调整应急机制,已调整至小数点后九位 2020债券历史之最