2014-03-12 4 views
0

나는MongoDB "범위가 비어 있습니다"는 색인이 누락되었음을 나타 냅니까?

Tue Mar 11 09:42:46.995 [conn1044] info DFM::findAll(): extent 0:2f000 was empty, skipping ahead. ns:mydb.mycoll 

내가 이전 데이터를 삭제하여 발생하는 MongoDB의 데이터 파일에 빈 공간이 할당되어 있기 때문입니다 아시다시피 같은 MongoDB를 로그 항목에 대한 질문을 많이 보았다. 일반적으로 디스크 공간을 복구하려는 경우 주석 작성자는이 메시지를 무시하거나 DB를 압축 할 수 있다고 말합니다.

그러나 어쨌든 MongoDB는 왜 빈 곳을 찾고 있습니까? 이 메시지는 또한 인덱스가 누락되어 있고 DB가 데이터 파일을 스캔 중임을 나타 냅니까?

답변

2

받은 메시지는 많은 양의 데이터가 삭제 된 후에 발생할 수 있습니다. 익스텐트는 데이터 파일이거나 데이터를 저장할 수있는 "버킷"입니다. 많은 양의 데이터를 삭제하면 Extent가 비어있을 수 있습니다. 이는 데이터가 삽입 될 때 범위가 다시 채워지므로 문제가되지 않습니다.

이 메시지는 또한 인덱스가 누락되어 있고 DB가 데이터 파일을 스캔 중임을 나타 냅니까?

아니요, 이것은 MongoDB가 빈 확장 영역을 찾을 때 정기적으로 기록되는 정보 메시지입니다. 언급 한대로 메시지를 무시하거나 복구를 실행하여 할당 된 공간을 비워 메시지를 처리 ​​할 수 ​​있습니다. 컬렉션에 자주 삭제되거나 문서가 증가하는 경우 usePowerOf2Sizes 컬렉션 할당 옵션을 사용하도록 설정해야합니다. 이 할당 전략은 MongoDB가 할당 레코드에 의해 삭제 된 공간을 가장 가까운 2의 제곱으로 반올림하여보다 효과적으로 재사용 할 수있게합니다. (Padding Factor을 사용하는 대신 PowerOf2Sizes가 MongoDB 2.6의 새로운 콜렉션에 대한 기본 할당 전략입니다.) 참고 usePowerOf2Sizes는 플래그가 활성화되면 새로운 레코드 할당에만 영향을 미칩니다.이 플래그를 활성화 한 후에 repairDatabase를 실행하여 모든 기록 할당이 업데이트되도록하는 것이 좋습니다.

+0

감사합니다. 삭제해야 할 사항이 많아서 좋은 조언입니다. –

+0

usePowerOf2Sizes는 MongoDB 3.0에서 기본값이므로 플래그는 더 이상 사용되지 않습니다. – jorisw

관련 문제