MongoDB - wiredTiger
wiredTiger 사용 conf 파일 예
// mongodb_wt.conf
storage:
dbPath: "/data/mongod_wt"
engine: "wiredTiger"
directoryPerDB: true
wiredTiger:
engineConfig:
cacheSizeGB: 1
directoryForIndexes: true
statisticsLogDelaySecs: 0
collectionConfig:
blockCompressor: "snappy"
indexConfig:
prefixCompression: true
journal:
enabled: true
systemLog:
destination: file
path: "/var/log/mongodb/mongodb_wt.log"
logAppend: true
processManagement:
fork: true
storage설정 항목 사례
- dbpath
- 데이터베이스 파일 생성 디렉토리
- journal
- 저널 파일 작성 여부
- directoryPerDB
- 기본 false. 데이터베이스 마다 디렉토리를 생성 할지
- engine
- 스토리지 엔진의 선택
- mmapv1: 기존 스토리지 엔진
- wiredTiger: wiredTiger 스토리지 엔진
- 3.0 이라면 wiredTiger를 사용하는 것이 좋다
wiredTiger 설정 항목 사례
engineConfig
- cacheSizeGB
- 기본적으로 시스템 메모리의 절반 or 1GB.
- wiredTiger에서 실제 데이터를 캐시 하기 위한 메모리 영역 지정.
- 쓰레드와 Index도 메모리를 먹으므로 처음에는 시스템 메모리의 6~7할 정도가 좋다고 생각한다
- directoryForIndexes
- MySQL의 innodb_file_per_table과 비슷
- statisticsLogDelaySecs
- 기본 값은 0(출력하지 않는다)
- wiredTiger 통계 정보 파일을 몇 초 만에 출력하까를 설정.
- 0 으로 하면 출력하지 않는다.
- 출력 시에 부하가 생기는 경향이 있으므로 테스트 시는 30초 정도로 설정하고 실 서비스 때는 10분에 한번이나 안 나오게 설정하는 것이 좋다.
collectionConfig
- blockCompressor
- 데이터 압축 여부. 기본 값은 snappy. 압축 시의 CPU 부하 등이 신경이 쓰이면 none 으로
- none: 압축하지 않는다
- snappy: 적당한 압축률로 고속으로 압축
- zlib: snappy 보다 압축률은 좋지만 저속
indexConfig
- prefixCompression
- 기본 True. index 압축 여부
wiredTiger 캐시 사이즈 확인
- 현재 설정 확인
db.serverStatus().wiredTiger
- 캐시 설정
db.serverStatus().wiredTiger.cache["maximum bytes configured"]
참고
- http://qiita.com/kuwa_tw/items/0a5704e9e505cffeae34
- http://qiita.com/takiuchi/items/309bfa7475d1c4666389
이 글은 2019-04-23에 작성되었습니다.