2016-06-10 4 views
7

나는 명령 db은 내가이 명령을 호출하는 디렉토리에 만든 폴더입니다빈 MongoDB 데이터베이스가 그렇게 큰 이유는 무엇입니까?

mongod --dbpath db 

와 새로운 MongoDB를 데이터베이스 인스턴스를 만들 때. 이걸 실행하고 디렉토리의 크기를 확인한 후에는 300MB 크기 이상 - 데이터가 없을 때 볼 수 있습니다.

여기 무슨 일 이니?

도움 주셔서 감사합니다. journal에 대한 사전 할당 된 크기에 대해 이야기 사람들에게


편집

감사합니다. 여기

순서로 정렬 데이터베이스 디렉토리에있는 파일/폴더의 목록입니다 (이 지금하여 데이터베이스의 데이터 조금이지만, 그 크기는 여기 무시할 만하다이다) :

$du -ha | sort -n 
4.0K ./WiredTiger 
4.0K ./WiredTiger.lock 
4.0K ./WiredTiger.turtle 
4.0K ./WiredTigerLAS.wt 
4.0K ./mongod.lock 
4.0K ./storage.bson 
8.0K ./.DS_Store 
8.0K ./diagnostic.data/metrics.2016-06-10T11-07-50Z-00000 
8.0K ./diagnostic.data/metrics.interim 
16K ./_mdb_catalog.wt 
16K ./index-3-3697658674625742251.wt 
36K ./collection-0-3697658674625742251.wt 
36K ./index-1-3697658674625742251.wt 
36K ./sizeStorer.wt 
44K ./WiredTiger.wt 
60K ./collection-2-3697658674625742251.wt 
72K ./diagnostic.data/metrics.2016-06-10T10-19-31Z-00000 
100M ./journal/WiredTigerLog.0000000003 
100M ./journal/WiredTigerPreplog.0000000001 
100M ./journal/WiredTigerPreplog.0000000002 
168K ./diagnostic.data/metrics.2016-06-10T11-17-58Z-00000 
256K ./diagnostic.data 
300M ./journal 
301M . 

로 저널 디렉토리가 거의 모든 공간을 차지하고 있다는 것을 알 수 있습니다.

+1

이 mongod'은'시작되지 않는'로, http://stackoverflow.com/questions/9598971의 중복되지 않습니다 - 이 예에서는 -replSet을 사용합니다. 디렉토리 목록에서 확인 하겠지만 새로운 MongoDB 3.2를 시작할 때 [journal] (https://docs.mongodb.com/manual/core/journaling/) 디렉토리에 미리 할당 된 파일의 예상 크기는 ~ 300MB입니다. WiredTiger 스토리지 엔진을 사용하는 서버. 저널 파일 크기 제한은 100MB이고 시작시 세 파일을 기대합니다. – Stennie

+0

내 질문에 파일 크기를 추가했습니다.이 가정을 확인합니다. 고맙습니다! – dafyddPrys

+0

디렉토리 목록을 추가해 주셔서 감사합니다 (fwiw,'du -ha'). 이것은 실제로 WiredTiger (MongoDB 3.2의 기본 저장 엔진)가있는 저널 파일에 대한 예상 된 사전 할당입니다. – Stennie

답변

7

MongoDB 및 구성된 스토리지 엔진의 버전에 따라 시작시 여러 데이터 및 메타 데이터 파일이 사전 할당됩니다. 이것은 예상되는 동작입니다. "비어있는"배포로 인해 여전히 하우스 키핑 및 진단 데이터가 생성됩니다.

디렉토리 목록에 따라 WiredTiger 스토리지 엔진을 사용하는 MongoDB 3.2가 기본값으로 실행됩니다. WiredTiger 저널 파일 당 100MB까지 할당, 그래서 새 배포 ~ 사전 할당 journal files 300MB의가 있습니다 (아직 명시 적으로 작성된 데이터베이스를하지 않고) 당신의 dbpath에 만들어집니다 저널 파일에서 제외

 100M ./journal/WiredTigerLog.0000000003 
    100M ./journal/WiredTigerPreplog.0000000001 
    100M ./journal/WiredTigerPreplog.0000000002 

, 기타 메타 데이터를 포함됩니다 뒤덮인 컬렉션

  • local 데이터베이스 mongod의이 인스턴스의 스타트 업 호출에 대한 몇 가지 진단 정보와 startup_log를했다. local.startup_log에 대한 관련 모음 및 색인 파일이 있습니다. 파일 이름은 불투명하지만 첫 번째 파일은 내가 당신의 예에서 같은데요 만들어 이러한는 다음과 같을 수 있습니다

    36K ./collection-0-3697658674625742251.wt 
    36K ./index-1-3697658674625742251.wt 
    
  • 여러 WiredTiger 메타 데이터 파일.local 데이터베이스가 startup_log 기본적으로 생성되기 때문에 항상 배포 적어도 하나의 데이터베이스가있을 것입니다 :

    4.0K ./WiredTiger 
    4.0K ./WiredTiger.lock 
    4.0K ./WiredTiger.turtle 
    4.0K ./WiredTigerLAS.wt 
    16K ./_mdb_catalog.wt 
    36K ./sizeStorer.wt 
    44K ./WiredTiger.wt 
    
  • diagnostic.data 디렉토리를; 이 서버 상태 측정의주기적인 샘플링입니다 :

    168K ./diagnostic.data/metrics.2016-06-10T11-17-58Z-00000 
    72K ./diagnostic.data/metrics.2016-06-10T10-19-31Z-00000 
    
1

새 데이터베이스를 만들 때 MongoDB는 oplog을위한 공간을 만듭니다.

oplog (작업 로그)는 데이터베이스에 저장된 데이터를 수정하는 모든 작업에 대한 롤링 기록을 유지하는 특수 캡핑 된 모음입니다.

+0

간단한 포인터를 보내 주셔서 감사합니다 :) – dafyddPrys

+0

oplog는 복제에만 국한되므로 독립 실행 형 서버 (mongod --dbpath ...)의 예제에서는 생성되지 않습니다. MongoDB 버전 및 스토리지 엔진에 따라 사전 할당 된 다른 데이터 파일이 있습니다. 디렉토리 목록은 더 많은 통찰력을 제공합니다. – Stennie

관련 문제