compact 시에 option을 추가할 수 있는데, paddingFactor라는 것이 있다.
paddingFactor란 무엇일까?
MongoDB 공식 가이드에는 아래와 같이 설명되어 있다.
The amount of space added to the end of each document at insert time. The document padding provides a small amount of extra space on disk to allow a document to grow slightly without needing to move the document. mongod automatically calculates this padding factor |
즉, document 저장시 실제 데이터 내용보다 조금 더 넓은 공간을 할당 받아 저장한다는 의미다. 해당 옵션은 1.0 ~ 4.0까지 지정이 가능하다.
예를 들면 1.2라고 옵션을 주면 저장시 실제 데이터보다 20% 넓은 공간을 할당받아서 저장된다는 의미이다.
특정 document가 update되어 커졌을 경우 migration이 일어나지 않도록 하기 위함인 듯 하다. 기본적으로 MongoDB가 자동으로 계산하지만, testDB 내에 collection을 확인해보니 1로 설정되어 있다.
oracle 이 extent 내에 block을 할당 받아서 저장된 후 update로 더 커졌을 때 migration 일어나는 것과 동일한 원리인 듯 하다.
compact의 경우 chunk 내에서 rewrite를 하기 때문에, 최초 collection생성시 paddingFactor 옵션을 1이상으로 주지 않았거나,
자동으로 증가하지 않았다면, compact 후에도 데이터가 차지하는 공간에는 변화가 없는 것이 당연한 것 같다.
단순히 compact가 rewrite하는 방식으로 동작한다고 가이드에서 본 것 같은데, 좀 더 자세히 알아봐야겠다.
'BigData > MongoDB' 카테고리의 다른 글
MongoDB Having 쿼리 적용하기 (0) | 2015.03.05 |
---|---|
MongoDB Aggregation시 Document Size 오류 (0) | 2015.03.05 |
MongoDB 인덱스 관리 (0) | 2015.03.05 |