2014-11-28 3 views
0

글쎄, 아마도이 문서에서 분명히해야합니다, 슬프게도, 이것은 사실이 아닙니다. 내 생각에 컴팩트는 컬렉션의 패딩 팩터가 주어진 가치를 벗어날 수 있도록 일종의 조각 모음을 만듭니다. 그러나이 사실이 될 것 같지 않습니다Mongodb의 컴팩트는 실제로 무엇을합니까?

> db.aaa.stats().paddingFactor 
1.9980000000000002 
> db.runCommand ({ compact: 'aaa', paddingFactor: 1.1 }) 
{ "ok" : 1 } 
> db.aaa.stats().paddingFactor 
1.9980000000000002 
> db.runCommand ({ compact: 'aaa', paddingFactor: 3 }) 
{ "ok" : 1 } 
> db.aaa.stats().paddingFactor 
1.9980000000000002 

를이 모음으로 패딩 요소를 변경하는 방법은 그렇게 할 다른 방법이 아니라면?

+0

음, '콤팩트'는 패딩을 제거해야합니다. –

답변

4

내 생각 엔 그 컴팩트 한 컬렉션

네의 DE-조각의 어떤 종류를 확인했다. 다시 쓰고 컬렉션의 모든 데이터와 색인을 DE- 조각 처리합니다.

모음의 paddingfactor

번호 그것은 컬렉션의 패딩 요소를 변경하지 않도록.

docs에서

:

소형 콤팩트 기존 문서 만 paddingFactor에게 수집에 대한 통계를 재설정하지 않습니다. 컴팩트 MongoDB는 문서에 새 레코드를 할당 할 때 기존 paddingFactor를 사용합니다.

그래서 당신은 아래의 명령을 실행할 때, 컬렉션에있는 기존 문서의

db.runCommand ({ compact: 'aaa', paddingFactor: 1.1 }) 

레코드 크기는 지정된 패딩 요소를 사용하여 변경 얻을. 즉, 개의 기존 레코드는 모두 padding 크기의 document size10%입니다.

는 그래서 DE-분할 후 기존의 모든 기록은

record size = document size + (10% of document size) 

, 자신의 크기로 변경해야합니다 그리고 그것은 하지 않는 영향을 미치거나 전체 컬렉션 패딩 계수를 변경합니다.

컬렉션의 패딩 요소를 변경하는 방법은 다른 방법이 있습니까?

아니요. 모음의 패딩 요소를 선택하거나 변경할 수 없습니다. docs에서 :

패딩 요인 : 많은 여분의 공간 MongoDB를 디스크에 문서 컨테이너 당 할당하는 방법을 결정하는 데 사용 자동으로 보정 상수. 패딩 팩터 1은 MongoDB가 문서에 필요한 공간 인 만을 할당한다는 것을 의미합니다.패딩 팩터 2는 MongoDB가 문서에 필요한 공간의 두 배를 할당한다는 것을 의미합니다.

+0

감사합니다. 꽤 나쁜 사고 방식으로 문서를 읽은 것 같습니다. –