在数据库缓冲池(内存池)的实现中,我有一个由内存中的页面组成的缓冲区。
这些页面有不同的大小(都是 512kb 的整数倍)。
假设我的驱逐策略是 LRU(最近最少使用),但我试图驱逐的页面的大小小于我需要替换的大小,如果我也想遵循 LRU,我应该驱逐尽可能多的 LRU 页面以适应我的新页面。
假设我需要n
驱逐最近使用的页面。然而,这些页面在缓冲/内存池中不一定是连续的。
我想到的一个简单方法是合并这些n
页面,这意味着我需要适当地重新排序缓冲池。
最简单的方法是复制整个缓冲区并覆盖永久缓冲区并适当地更新数据类型。然而,这假设我们有足够的 RAM 来为这个操作复制整个缓冲区。有没有一种聪明的方法,我不必复制整个缓冲区?
谢谢