본문 바로가기
mongoDB

mongoDB collection 별 용량 확인하는 방법

by freesunny 2024. 6. 27.
  • 방법#1 : mongosh에서는 SQL 스타일의 명령어를 사용하여 데이터베이스 내의 컬렉션 목록을 쉽게 확인할 수 있습니다.
    • 이 명령어는 현재 선택된 데이터베이스의 컬렉션 목록을 출력합니다.
> use myDatabase
> show collections
users
products
orders

 

  • 방법#2 : mongosh에서 JavaScript 메서드를 사용하여 컬렉션 목록을 조회할 수도 있습니다.
    • 이 명령어는 현재 선택된 데이터베이스의 컬렉션 이름을 배열로 반환합니다.
> use myDatabase
> db.getCollectionNames()
[
  "users",
  "products",
  "orders"
]

 

  • mongosh에서 db.collection.stats() 메서드를 사용하여 컬렉션의 통계 정보를 확인할 수 있습니다.
    • 주요 필드 설명
      • size: 컬렉션의 전체 크기(바이트 단위).
      • count: 컬렉션 내 문서 수.
      • avgObjSize: 평균 문서 크기(바이트 단위).
      • storageSize: 컬렉션이 실제로 차지하는 스토리지 크기(바이트 단위).
      • nindexes: 컬렉션에 존재하는 인덱스 수.
      • totalIndexSize: 인덱스가 차지하는 전체 크기(바이트 단위).
      • indexSizes: 각 인덱스별 크기(바이트 단위).
> use myDatabase
> db.myCollection.stats()
{
  "ns" : "myDatabase.myCollection",
  "size" : 1024,
  "count" : 100,
  "avgObjSize" : 10.24,
  "storageSize" : 2048,
  "capped" : false,
  "wiredTiger" : {
    ...
  },
  "nindexes" : 1,
  "totalIndexSize" : 4096,
  "indexSizes" : {
    "_id_" : 4096
  },
  "ok" : 1
}

 

  • 인덱스 크기 확인
    • 인덱스 크기를 별도로 확인하려면 totalIndexSize와 indexSizes 필드를 확인할 수 있습니다.
> var stats = db.myCollection.stats();
print("Total Index Size: " + stats.totalIndexSize + " bytes");
print("Index Sizes: ", stats.indexSizes);

 

  • 모든 컬렉션의 용량 확인
    • 데이터베이스 내 모든 컬렉션의 용량을 확인하려면, db.getCollectionNames()와 db.collection.stats()를 조합하여 사용할 수 있습니다.
    •  
> db.getCollectionNames().forEach(function(collectionName) {
  var stats = db.getCollection(collectionName).stats();
  print("Collection: " + collectionName);
  print("Size: " + stats.size + " bytes");
  print("Storage Size: " + stats.storageSize + " bytes");
  print("Total Index Size: " + stats.totalIndexSize + " bytes");
  print("\n");
});

 

  • 모든 컬렉션의 용량 확인 (GB)
    • db.collection.stats() 명령을 사용하여 얻은 컬렉션 용량 정보를 바이트 단위가 아닌 기가바이트 단위로 표시하려면, 바이트를 기가바이트로 변환하는 계산을 추가하면 됩니다. 바이트를 기가바이트로 변환하려면 바이트 값을 1024 * 1024 * 1024 로 나누면 됩니다.
      • 스크립트 설명
        • db.getCollectionNames().forEach(function(collectionName) {...}): 데이터베이스의 모든 컬렉션에 대해 반복합니다.
        • db.getCollection(collectionName).stats(): 각 컬렉션의 통계 정보를 가져옵니다.
        • (stats.size / (1024 * 1024 * 1024)).toFixed(2): 바이트를 기가바이트로 변환하고 소수점 두 자리까지 반올림합니다.
        • print("Collection: " + collectionName): 컬렉션 이름을 출력합니다.
        • print("Size: " + sizeGB + " GB"): 컬렉션의 크기를 기가바이트 단위로 출력합니다.
        • print("Storage Size: " + storageSizeGB + " GB"): 컬렉션이 실제로 차지하는 스토리지 크기를 기가바이트 단위로 출력합니다.
        • print("Total Index Size: " + totalIndexSizeGB + " GB"): 인덱스가 차지하는 전체 크기를 기가바이트 단위로 출력합니다.
// 모든 컬렉션의 용량을 GB 단위로 출력하는 스크립트
> db.getCollectionNames().forEach(function(collectionName) {
    var stats = db.getCollection(collectionName).stats();
    var sizeGB = (stats.size / (1024 * 1024 * 1024)).toFixed(2);
    var storageSizeGB = (stats.storageSize / (1024 * 1024 * 1024)).toFixed(2);
    var totalIndexSizeGB = (stats.totalIndexSize / (1024 * 1024 * 1024)).toFixed(2);

    print("Collection: " + collectionName);
    print("Size: " + sizeGB + " GB");
    print("Storage Size: " + storageSizeGB + " GB");
    print("Total Index Size: " + totalIndexSizeGB + " GB");
    print("\n");
});

'mongoDB' 카테고리의 다른 글

mongodb 에서 인덱스 용량 확인  (0) 2024.09.21
mongoDB 데이터 압축  (0) 2024.06.27
documentDB 를 접속을 위한 port forwarding 셋팅  (1) 2020.05.25
mongod log file 관리  (0) 2019.07.19