데이터베이스 버퍼 풀 (메모리 풀)의 구현에서 메모리의 페이지로 구성된 버퍼가 있습니다.가변 크기 페이지가있는 버퍼 풀. 수신 페이지가 축출 페이지보다 클 때 페이지를 합체하는 고성능 방법이 필요합니다.
페이지 크기가 다릅니다 (512kb의 정수 배수).
내 퇴거 정책은 LRU (가장 최근에 사용되지는 않았지만)이지만 퇴거하려는 페이지의 크기가 교체해야하는 것보다 적습니다. LRU도 따르고 싶으면 다음과 같이 많은 LRU 페이지를 제거해야합니다. 내 새 페이지에 꼭 들어 맞아야합니다.
내가 축출하기 위해 최근에 사용한 페이지 n
이 필요하다고 가정합니다. 그러나이 페이지는 반드시 버퍼/메모리 풀에서 연속적 일 필요는 없습니다.
간단한 접근 방법은 이러한 n
페이지를 통합하는 것입니다. 즉, 버퍼 풀을 적절히 재정렬해야한다는 의미입니다.
가장 간단한 방법은 전체 버퍼를 복사하고 영구 버퍼를 덮어 쓰고 데이터 형식을 적절하게 업데이트하는 것입니다. 그러나 이것은이 작업을 위해 전체 버퍼를 복사하는 데 충분한 RAM이 있다고 가정합니다. 전체 버퍼를 복사 할 필요가없는 영리한 접근법이 있습니까?
감사
자세한 답변을 보내 주셔서 감사합니다. 감사합니다. –