データベース バッファ プール (メモリ プール) の実装では、メモリ内のページで構成されるバッファがあります。
ページにはさまざまなサイズがあります (すべて 512kb の整数倍)。
エビクション ポリシーが LRU (最近使用されていない) であるとしますが、エビクトしようとしているページのサイズが、置き換える必要のあるサイズよりも小さいとします。LRU にも従いたい場合は、収まるのに必要な数の LRU ページをエビクトする必要があります。私の新しいページ。
n
最近使用したページを削除する必要があるとします。ただし、これらのページは、バッファ/メモリ プール内で必ずしも連続しているわけではありません。
私が考えた簡単な方法は、これらのn
ページを結合することです。つまり、バッファー プールを適切に並べ替える必要があります。
最も簡単な方法は、バッファー全体をコピーして永続バッファーを上書きし、データ型を適切に更新することです。ただし、これは、この操作のためにバッファ全体をコピーするのに十分な RAM があることを前提としています。バッファ全体をコピーする必要がない賢いアプローチはありますか?
ありがとう