MongoDB 스토리지 엔진 확인 방법
MongoDB에서 현재 어떤 스토리지 엔진이 사용되고 있는지 확인하려면 db.serverStatus() 메서드를 활용하면 됩니다. 가장 간단한 방법은 다음과 같습니다.
db.serverStatus().storageEngine;
특정 스토리지 엔진의 상세 설정 정보까지 모두 확인하고 싶다면 아래 문법을 사용합니다.
db.serverStatus().스토리지엔진이름;
1. 현재 사용 중인 스토리지 엔진 조회하기
실제로 몽고 셸(mongosh)에서 위 명령을 실행해 보겠습니다.
> db.serverStatus().storageEngine;
실행 결과는 다음과 같습니다.
{
"name" : "wiredTiger",
"supportsCommittedReads" : true,
"supportsSnapshotReadConcern" : true,
"readOnly" : false,
"persistent" : true
}
출력 결과를 보면 이 MongoDB 인스턴스가 기본 스토리지 엔진인 WiredTiger를 사용 중임을 알 수 있습니다. 각 필드의 의미는 다음과 같습니다.
- name: 사용 중인 스토리지 엔진의 이름
- supportsCommittedReads: 커밋된 데이터 읽기(read concern "majority") 지원 여부
- supportsSnapshotReadConcern: 스냅샷 읽기(snapshot read) 지원 여부
- readOnly: 읽기 전용 모드 여부
- persistent: 디스크 기반 영구 저장 지원 여부
2. WiredTiger 상세 통계 조회하기
사용 중인 스토리지 엔진 이름을 그대로 키로 넣으면 해당 엔진의 세부 구성 정보와 운영 통계를 확인할 수 있습니다.
> db.serverStatus().wiredTiger;
이 명령은 매우 방대한 양의 통계를 반환합니다. 전체 출력 중 핵심적인 부분만 발췌하면 다음과 같습니다.
{
"uri" : "statistics:",
"LSM" : { ... },
"async" : { ... },
"block-manager" : {
"blocks read" : 482,
"blocks written" : 312,
"bytes read" : 2400256,
"bytes written" : 2953216,
...
},
"cache" : {
"bytes currently in the cache" : 814060,
"maximum bytes configured" : 4803526656,
"pages currently held in the cache" : 349,
...
},
"connection" : { ... },
"cursor" : { ... },
"data-handle" : { ... },
"lock" : { ... },
"log" : { ... },
"perf" : { ... },
"reconciliation" : { ... },
"session" : { ... },
"thread-state" : { ... },
"thread-yield" : { ... },
"transaction" : {
"transaction checkpoints" : 116,
"transactions committed" : 40,
"transactions rolled back" : 269,
...
},
"concurrentTransactions" : {
"write" : { "out" : 0, "available" : 128, "totalTickets" : 128 },
"read" : { "out" : 1, "available" : 127, "totalTickets" : 128 }
}
}
주요 통계 항목 살펴보기
- block-manager: 디스크 블록 단위의 읽기/쓰기 I/O 통계
- cache: WiredTiger 내부 캐시 사용량, 보유 페이지 수, 축출(eviction) 관련 지표
- connection: 열려 있는 파일 수, 메모리 할당/해제, fsync 등 저수준 I/O 호출 통계
- cursor: 커서 생성·검색·재설정 등 커서 동작 관련 통계
- lock: 체크포인트, 스키마, 테이블 등 각종 잠금 획득 횟수와 대기 시간
- log: 저널 로그 기록량, 압축률, 동기화(sync) 작업 통계
- transaction: 체크포인트 횟수와 소요 시간, 커밋/롤백된 트랜잭션 수
- concurrentTransactions: 읽기/쓰기 동시성 제어를 위한 티켓(ticket) 사용 현황
이처럼 db.serverStatus().storageEngine으로 스토리지 엔진의 종류를 빠르게 파악할 수 있고, 필요하다면 db.serverStatus().wiredTiger를 통해 성능 튜닝이나 장애 진단에 유용한 세부 지표까지 확인할 수 있습니다.