2012-05-08 1 views
7

FSDirectory와 MMapDirectory의 차이점은 무엇입니까? 내 캐시를 워밍업하고 싶습니다. 이것이 유용 할 수 있지만 캐시를 워밍업하는 데 이것이 도움이 될 수있는 방법을 찾을 수 없다는 것을 읽었습니다. 네가 어떤 생각을 가지고 있다면 나에게 설명해. 심지어 포인터도 환영합니다.FSDirectory와 MMap Directory의 차이점은 무엇입니까?

Lucene 설명서에 따르면 MMap은 가상 메모리를 사용하여 색인 조회 속도를 높입니다.

speedp 업을 달성하고, 무엇은 내 가상 메모리에 맞지 않도록 내 지수>

+0

첫 번째 부분을 얻었습니다. 가상 메모리에서 사용할 수있는 색인부터 조회가 빨라집니다. – ganesshkumar

답변

7

MMapDirectory는 추상적 인 FSDirectory 클래스의 구상 서브 클래스 중 하나 인 큰 경우 발생하는 방법 . 메모리 매핑 파일을 사용하여 인덱스의 정보에 액세스합니다.

다른 옵션은 SimpleFSDirectoryNIOFSDirectory이며 다른 방법을 사용합니다. 이 세 가지에 대한 간략한 설명을 보려면 documentation for FSDirectory을 살펴 봐야합니다. 거기에 표시되는대로 FSDirectory.open(File)은 사용자 환경에 가장 적합한 구현을 선택하려고 시도합니다.

내 경험에 비추어 볼 때 NIOFSDirectoryMMapFSDirectory 사이의 성능에 큰 차이가 없음을 알았지 만 자신의 데이터 및 하드웨어 설정을 사용하여 성능 테스트를 수행해야합니다.

MMapFSDirectory을 사용하는 경우 가상 메모리와 인덱스 크기는 32 비트 시스템 (unless your indexes are larger than 2^48 bit = 32TB)에서만 문제가 될 수 있습니다.

+0

질문의 두 번째 부분을 알아낼 수있게 도와주세요.이 프로젝트를 완료했으며 MMapDirectory의 영향은 놀랍습니다. 파일 크기가 큰 경우 차이점을 알 수 있습니다. 메모리에 맞지 않는 파일을로드하고 있습니다. – ganesshkumar

1

인덱스가 가상 메모리에 적합하지 않으면 FSDirectory를 사용하는 것이 더 나을 것입니다. 문제는 가상 메모리에 맞지 않을 때 MMapDirectory를 사용하는 것이 FSDirectory를 사용하고 OS의 캐싱 알고리즘을 사용하는 것과 동일하다는 것입니다 (OS의 캐싱 알고리즘은 직접 코딩 할 수있는 것보다 낫습니다). 두 경우 모두 인덱스의 일부만 실제 메모리에 동시에 저장되기 때문에 'Equivalent'입니다.

위에서 말한 것처럼 martin은 자신의 성능 테스트를 수행해야합니다.