在數據庫緩衝池(內存池)的實現中,我有一個由內存中的頁面組成的緩衝區。具有可變大小頁面的緩衝池。當傳入頁面大於要被驅逐的頁面時,需要高性能的方式來合併頁面
頁面有不同的大小(512kb的所有整數倍)。
說我的驅逐政策是LRU(最近最少使用),但我試圖驅逐的頁面尺寸比我需要替換的尺寸小,如果我想跟隨LRU,我應該驅逐儘可能多的LRU頁面必要適合我的新頁面。
假設我需要n
最近使用的頁面被驅逐。但是,這些頁面在緩衝區/內存池中不一定是連續的。
我想過的一個簡單方法是合併這些頁面,這意味着我需要適當地重新排序緩衝池。
最簡單的方法是複製整個緩衝區並覆蓋永久緩衝區並適當地更新數據類型。然而,這假定我們有足夠的RAM來拷貝整個緩衝區來執行這個操作。有沒有一種巧妙的方法,我不需要複製整個緩衝區?
感謝
感謝您的詳細解答。讚賞。 –