dirty list机制分析

对文件一边读一边写的应该场景中,我们一般采用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机制分析

文章插图
读或者写操作结束后,均需要释放块数据,根据块数据是否被写脏,需要执行不同的操作,如果写脏了(包括之前就是脏数据),需要放到dirty list里,没有写脏,放到free list里 。
写操作基于上面的两个操作:
dirty list机制分析

文章插图
【dirty list机制分析】最终的时候,将dirty list里的数据一次性写入文件或db即可 。