不能直接修改硬盘上的数据,而是先将数据从硬盘读入到内存的data cache,然后在内存中修改(被修改过的页称为脏数据页),最后再从内存回写到硬盘。下述进程都可能将脏页回写到硬盘。
不能直接修改硬盘上的数据,而是先将数据从硬盘读入到内存的data cache,然后在内存中修改(被修改过的页称为脏数据页),最后再从内存回写到硬盘。下述进程都可能将脏页回写到硬盘。
脏页-linux内核中的概念,因为硬盘的读写速度远赶不上内存的速度,系统就把读写比较频繁的数据事先放到内存中,以提高读写速度,这就叫高速缓存,linux是以页作为高速缓存的单位,当进程修改了高速缓存里的数据时,该页就被内核标记为脏页,内核将会在合适的时间把脏页的数据写到磁盘中去,以保持高速缓存中的数据和磁盘中的数据是一致的。
RocketMQ利用了Linux cache的优势,作为消息中间件的持久化方案,使得中间件性能大幅提升。但是对于需要分段提交的事务消息来讲,由于RocketMQ没有采用KV的存储方式,而是类似数组(Offset下标,第二段提交时需要制定Offset)的存储方式,会造成系统脏页过多。