Computer >> 컴퓨터 >  >> 프로그래밍 >> MongoDB

MongoDB에서 현재 사용 중인 스토리지 엔진 확인하는 방법

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를 통해 성능 튜닝이나 장애 진단에 유용한 세부 지표까지 확인할 수 있습니다.