Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ / /

db.collection.stats()

이 페이지의 내용

  • 정의
  • 행동
  • 예시

드라이버가 포함된 MongoDB

이 페이지에서는 mongosh 메서드를 설명합니다. MongoDB 드라이버에서 해당 메서드를 보려면 프로그래밍 언어의 해당 페이지를 참조하세요.

C#Java SyncNode.jsPyMongoCC++GoJava RSKotlin CoroutineKotlin SyncPHPMongoidRustScala

$collStats 명령과 collStats mongosh 해당 헬퍼 메서드 db.collection.stats() 대신 집계 단계를 사용합니다.

db.collection.stats(<option>)

중요

Mongo쉬 방법

이 페이지에서는 mongosh 메서드에 대해 설명합니다. 이는 데이터베이스 명령 또는 Node.js와 같은 언어별 드라이버에 대한 설명서가 아닙니다.

데이터베이스 명령에 대해서는 collStats 명령을 참조하십시오.

MongoDB API 드라이버의 경우 언어별 MongoDB 드라이버 설명서를 참조하세요.

collection에 대한 통계를 반환합니다.

이 메서드의 형식은 다음과 같습니다.

db.collection.stats({
scale: <num>, // Optional
indexDetails: <boolean>, // Optional
indexDetailsKey: <document>, // Optional
indexDetailsName: <string>. // Optional
})
필드
유형
설명
scale
숫자

선택 사항입니다. 다양한 크기의 데이터에 대한 배율 인수입니다. 크기 데이터를 바이트 단위로 반환하려면 scale 기본값은 1입니다. 바이트가 아닌 킬로바이트를 표시하려면 scale1024로 지정합니다.

정수가 아닌 배율 인수를 지정하면 MongoDB는 지정된 인수의 정수 부분을 사용합니다. 예를 들어, 배율 인수를 1023.999 으로 지정하면 MongoDB는 배율 인수로 1023 을 사용합니다.

버전 4.2부터 출력에 크기 값의 크기를 조정하는 데 사용되는 scaleFactor 이 포함됩니다.

indexDetails
부울

선택 사항. true 인 경우 db.collection.stats() 는 컬렉션 통계 외에 index details 을 반환합니다.

WiredTiger 스토리지 엔진에서만 작동합니다.

기본값은 false입니다.

indexDetailsKey
문서

선택 사항. indexDetailstrue인 경우 indexDetailsKey를 사용하여 인덱스 키 사양을 지정해 인덱스 세부 정보를 필터링할 수 있습니다. indexDetailsKey와 정확히 일치하는 인덱스만 반환됩니다.

일치하는 항목이 없으면 indexDetails가 모든 인덱스에 대한 통계를 표시합니다.

getIndexes()를 사용하여 인덱스 키를 검색합니다. indexDetailsKeyindexDetailsName과 함께 사용할 수 없습니다.

indexDetailsName
문자열

선택 사항. indexDetailstrue인 경우 indexDetailsName을 사용하여 인덱스 name을 지정하면 인덱스 세부 정보를 필터링할 수 있습니다. indexDetailsName과 정확히 일치하는 인덱스 이름만 반환됩니다.

일치하는 항목이 없으면 indexDetails가 모든 인덱스에 대한 통계를 표시합니다.

인덱스 이름을 확인하려면 getIndexes() 를 사용합니다. indexDetailsNameindexDetailsField와 함께 사용할 수 없습니다.

scale 인수만 지정하기 위해 MongoDB는 레거시 형식을 지원합니다.

db.collection.stats(<number>)
반환합니다:지정된 컬렉션에 대한 통계가 포함된 문서입니다. 반환된 통계에 대한 분석은 collStats를 참조하세요.

지표 이름(예: "bytes currently in the cache")으로 달리 지정하지 않는 한 크기와 관련된 값은 바이트 단위로 표시되며 scale(으)로 재정의할 수 있습니다.

배율 인수는 영향을 받는 크기 값을 정수로 반올림합니다.

스토리지 엔진에 따라 반환되는 데이터가 다를 수 있습니다. 필드에 대한 자세한 내용은 출력 세부 정보를 참조하세요.

Wired Tiger storage engine을 사용하여 mongod를 비정상적으로 종료한 후 db.collection.stats()에서 보고하는 개수 및 크기 통계가 부정확할 수 있습니다.

편차의 정도는 마지막 체크포인트와 비정상 종료 사이에 수행된 삽입, 업데이트 또는 삭제 작업의 수에 따라 달라집니다. 체크포인트는 보통 60초마다 발생합니다. 그러나mongod 기본값이 아닌 --syncdelay 설정으로 실행되는 인스턴스는 체크포인트가 다소 빈번하게 발생할 수 있습니다.

mongod의 각 컬렉션에서 validate를 실행하여 비정상 종료 후 통계를 복원합니다.

비정상 종료 후

  • validate collStats 출력카운트 통계를 최신 값으로 업데이트합니다.

  • collStats 출력에 삽입되거나 제거된 문서 수와 같은 기타 통계는 추정치입니다.

복제본 세트 노드에서 실행하는 경우 collStats 연산을 수행하려면 노드가 PRIMARY 또는 SECONDARY 상태여야 합니다. 노드가 STARTUP2와 같은 다른 상태이면 연산 오류가 발생합니다.

indexDetailsKey 또는 indexDetailsName 중 하나를 사용하여 indexDetails를 필터링하면 일치하는 인덱스 하나만 반환됩니다. 정확히 일치하는 항목이 없는 경우, indexDetails는 컬렉션의 모든 인덱스에 대한 정보를 표시합니다.

indexDetailsKey 필드에는 다음 형식의 문서가 사용됩니다.

{ '<string>' : <value>, '<string>' : <value>, ... }

여기서 <string>>은 인덱싱되는 필드이고 <value>는 인덱스의 방향이거나 text 또는 2dsphere와 같은 특수 인덱스 유형입니다. 전체 인덱스 유형 목록은 인덱스 유형을 참조하세요.

MongoDB 8.0 부터는 인덱스 필터 를 추가하는 대신 쿼리 설정을 사용합니다. 인덱스 필터는 MongoDB 8.0 부터 더 이상 사용되지 않습니다.

쿼리 설정에는 인덱스 필터보다 더 많은 기능이 있습니다. 또한 인덱스 필터는 영구적이지 않으며 모든 클러스터 노드에 대한 인덱스 필터를 쉽게 만들 수 없습니다. 쿼리 설정을 추가하고 예제를 탐색하려면 setQuerySettings 를 참조하세요.

WiredTiger 스토리지 엔진을 사용하는 MongoDB 인스턴스의 경우, 비정상 종료 후 collStats, dbStats, count에서 보고한 대로 크기 및 개수에 대한 통계가 최대 1,000개 문서까지 부정확할 수 있습니다. collection에 대한 올바른 통계를 복원하려면 collection에서 validate를 실행합니다.

db.collection.stats()에는 현재 구축 중인 인덱스에 대한 정보가 포함되어 있습니다. 자세한 내용은 다음을 참조하세요.

참고

다음 작업은 test 데이터베이스의 restaurants collection에 대한 통계를 반환합니다.

db.restaurants.stats()

이 연산은 다음을 반환합니다.

{
"ns" : "test.restaurants",
"size" : 7557340,
"count" : 25359,
"avgObjSize" : 298,
"storageSize" : 9670656,
"freeStorageSize" : 6660096,
"capped" : false,
"wiredTiger" : {
"metadata" : {
"formatVersion" : 1
},
"creationString" : "access_pattern_hint=none,allocation_size=4KB,app_metadata=(formatVersion=1),assert=(commit_timestamp=none,durable_timestamp=none,read_timestamp=none),block_allocation=best,block_compressor=snappy,cache_resident=false,checksum=on,colgroups=,collator=,columns=,dictionary=0,encryption=(keyid=,name=),exclusive=false,extractor=,format=btree,huffman_key=,huffman_value=,ignore_in_memory_cache_size=false,immutable=false,internal_item_max=0,internal_key_max=0,internal_key_truncate=true,internal_page_max=4KB,key_format=q,key_gap=10,leaf_item_max=0,leaf_key_max=0,leaf_page_max=32KB,leaf_value_max=64MB,log=(enabled=true),lsm=(auto_throttle=true,bloom=true,bloom_bit_count=16,bloom_config=,bloom_hash_count=8,bloom_oldest=false,chunk_count_limit=0,chunk_max=5GB,chunk_size=10MB,merge_custom=(prefix=,start_generation=0,suffix=),merge_max=15,merge_min=0),memory_page_image_max=0,memory_page_max=10m,os_cache_dirty_max=0,os_cache_max=0,prefix_compression=false,prefix_compression_min=4,source=,split_deepen_min_child=0,split_deepen_per_child=0,split_pct=90,type=file,value_format=u",
"type" : "file",
"uri" : "statistics:table:collection-43-6797839137631957852",
"LSM" : {
"bloom filter false positives" : 0,
"bloom filter hits" : 0,
"bloom filter misses" : 0,
"bloom filter pages evicted from cache" : 0,
"bloom filter pages read into cache" : 0,
"bloom filters in the LSM tree" : 0,
"chunks in the LSM tree" : 0,
"highest merge generation in the LSM tree" : 0,
"queries that could have benefited from a Bloom filter that did not exist" : 0,
"sleep for LSM checkpoint throttle" : 0,
"sleep for LSM merge throttle" : 0,
"total size of bloom filters" : 0
},
"block-manager" : {
"allocations requiring file extension" : 460,
"blocks allocated" : 556,
"blocks freed" : 420,
"checkpoint size" : 2994176,
"file allocation unit size" : 4096,
"file bytes available for reuse" : 6660096,
"file magic number" : 120897,
"file major version number" : 1,
"file size in bytes" : 9670656,
"minor version number" : 0
},
"btree" : {
"btree checkpoint generation" : 58,
"column-store fixed-size leaf pages" : 0,
"column-store internal pages" : 0,
"column-store variable-size RLE encoded values" : 0,
"column-store variable-size deleted values" : 0,
"column-store variable-size leaf pages" : 0,
"fixed-record size" : 0,
"maximum internal page key size" : 368,
"maximum internal page size" : 4096,
"maximum leaf page key size" : 2867,
"maximum leaf page size" : 32768,
"maximum leaf page value size" : 67108864,
"maximum tree depth" : 3,
"number of key/value pairs" : 0,
"overflow pages" : 0,
"pages rewritten by compaction" : 0,
"row-store empty values" : 0,
"row-store internal pages" : 0,
"row-store leaf pages" : 0
},
"cache" : {
"bytes currently in the cache" : 19401033,
"bytes dirty in the cache cumulative" : 28415209,
"bytes read into cache" : 0,
"bytes written from cache" : 31893695,
"checkpoint blocked page eviction" : 0,
"data source pages selected for eviction unable to be evicted" : 0,
"eviction walk passes of a file" : 0,
"eviction walk target pages histogram - 0-9" : 0,
"eviction walk target pages histogram - 10-31" : 0,
"eviction walk target pages histogram - 128 and higher" : 0,
"eviction walk target pages histogram - 32-63" : 0,
"eviction walk target pages histogram - 64-128" : 0,
"eviction walks abandoned" : 0,
"eviction walks gave up because they restarted their walk twice" : 0,
"eviction walks gave up because they saw too many pages and found no candidates" : 0,
"eviction walks gave up because they saw too many pages and found too few candidates" : 0,
"eviction walks reached end of tree" : 0,
"eviction walks started from root of tree" : 0,
"eviction walks started from saved location in tree" : 0,
"hazard pointer blocked page eviction" : 0,
"in-memory page passed criteria to be split" : 4,
"in-memory page splits" : 2,
"internal pages evicted" : 0,
"internal pages split during eviction" : 0,
"leaf pages split during eviction" : 2,
"modified pages evicted" : 2,
"overflow pages read into cache" : 0,
"page split during eviction deepened the tree" : 0,
"page written requiring cache overflow records" : 0,
"pages read into cache" : 0,
"pages read into cache after truncate" : 1,
"pages read into cache after truncate in prepare state" : 0,
"pages read into cache requiring cache overflow entries" : 0,
"pages requested from the cache" : 76607,
"pages seen by eviction walk" : 0,
"pages written from cache" : 552,
"pages written requiring in-memory restoration" : 0,
"tracked dirty bytes in the cache" : 0,
"unmodified pages evicted" : 0
},
"cache_walk" : {
"Average difference between current eviction generation when the page was last considered" : 0,
"Average on-disk page image size seen" : 0,
"Average time in cache for pages that have been visited by the eviction server" : 0,
"Average time in cache for pages that have not been visited by the eviction server" : 0,
"Clean pages currently in cache" : 0,
"Current eviction generation" : 0,
"Dirty pages currently in cache" : 0,
"Entries in the root page" : 0,
"Internal pages currently in cache" : 0,
"Leaf pages currently in cache" : 0,
"Maximum difference between current eviction generation when the page was last considered" : 0,
"Maximum page size seen" : 0,
"Minimum on-disk page image size seen" : 0,
"Number of pages never visited by eviction server" : 0,
"On-disk page image sizes smaller than a single allocation unit" : 0,
"Pages created in memory and never written" : 0,
"Pages currently queued for eviction" : 0,
"Pages that could not be queued for eviction" : 0,
"Refs skipped during cache traversal" : 0,
"Size of the root page" : 0,
"Total number of pages currently in cache" : 0
},
"compression" : {
"compressed page maximum internal page size prior to compression" : 4096,
"compressed page maximum leaf page size prior to compression " : 111392,
"compressed pages read" : 0,
"compressed pages written" : 548,
"page written failed to compress" : 0,
"page written was too small to compress" : 4
},
"cursor" : {
"bulk loaded cursor insert calls" : 0,
"cache cursors reuse count" : 74,
"close calls that result in cache" : 0,
"create calls" : 4,
"insert calls" : 50718,
"insert key and value bytes" : 24500283,
"modify" : 0,
"modify key and value bytes affected" : 0,
"modify value bytes modified" : 0,
"next calls" : 101747,
"open cursor count" : 0,
"operation restarted" : 0,
"prev calls" : 1,
"remove calls" : 0,
"remove key bytes removed" : 0,
"reserve calls" : 0,
"reset calls" : 51000,
"search calls" : 25359,
"search near calls" : 25485,
"truncate calls" : 0,
"update calls" : 0,
"update key and value bytes" : 0,
"update value size change" : 0
},
"reconciliation" : {
"dictionary matches" : 0,
"fast-path pages deleted" : 0,
"internal page key bytes discarded using suffix compression" : 1077,
"internal page multi-block writes" : 1,
"internal-page overflow keys" : 0,
"leaf page key bytes discarded using prefix compression" : 0,
"leaf page multi-block writes" : 12,
"leaf-page overflow keys" : 0,
"maximum blocks required for a page" : 1,
"overflow values written" : 0,
"page checksum matches" : 0,
"page reconciliation calls" : 80,
"page reconciliation calls for eviction" : 2,
"pages deleted" : 0
},
"session" : {
"object compaction" : 0
},
"transaction" : {
"update conflicts" : 0
}
},
"nindexes" : 4,
"indexBuilds" : [ ],
"totalIndexSize" : 704512,
"totalSize" : 10375168,
"indexSizes" : {
"_id_" : 241664,
"cuisine_1" : 147456,
"borough_1_cuisine_1" : 159744,
"borough_1_address.zipcode_1" : 155648
},
"scaleFactor" : 1,
"ok" : 1
}

통계에 스케일 매개변수가 제공되지 않았으므로 모든 크기 값은 bytes 단위입니다.

다음 작업은 1024scale을 지정하여 데이터의 스케일을 bytes에서 kilobytes로 변경하는 작업입니다.

db.restaurants.stats( { scale : 1024 } )

이 연산은 다음을 반환합니다.

{
"ns" : "test.restaurants",
"size" : 7380,
"count" : 25359,
"avgObjSize" : 298,
"storageSize" : 9444,
"freeStorageSize" : 6504,
"capped" : false,
"wiredTiger" : {
...
},
"nindexes" : 4,
"indexBuilds" : [ ],
"totalIndexSize" : 688,
"totalSize" : 10132,
"indexSizes" : {
"_id_" : 236,
"cuisine_1" : 144,
"borough_1_cuisine_1" : 156,
"borough_1_address.zipcode_1" : 152
},
"scaleFactor" : 1024,
"ok" : 1
}

다음 작업은 collection 내의 각 인덱스와 관련된 정보를 포함하는 indexDetails 문서를 생성합니다.

db.restaurants.stats( { indexDetails : true } )

이 연산은 다음을 반환합니다.

{
"ns" : "test.restaurants",
"size" : 7557340,
"count" : 25359,
"avgObjSize" : 298,
"storageSize" : 9670656,
"freeStorageSize" : 6660096,
"capped" : false,
"wiredTiger" : {
...
},
"nindexes" : 4,
"indexDetails" : {
"_id_" : {
"metadata" : {
"formatVersion" : 8
},
"creationString" : "access_pattern_hint=none,allocation_size=4KB,app_metadata=(formatVersion=8),assert=(commit_timestamp=none,durable_timestamp=none,read_timestamp=none),block_allocation=best,block_compressor=,cache_resident=false,checksum=on,colgroups=,collator=,columns=,dictionary=0,encryption=(keyid=,name=),exclusive=false,extractor=,format=btree,huffman_key=,huffman_value=,ignore_in_memory_cache_size=false,immutable=false,internal_item_max=0,internal_key_max=0,internal_key_truncate=true,internal_page_max=16k,key_format=u,key_gap=10,leaf_item_max=0,leaf_key_max=0,leaf_page_max=16k,leaf_value_max=0,log=(enabled=true),lsm=(auto_throttle=true,bloom=true,bloom_bit_count=16,bloom_config=,bloom_hash_count=8,bloom_oldest=false,chunk_count_limit=0,chunk_max=5GB,chunk_size=10MB,merge_custom=(prefix=,start_generation=0,suffix=),merge_max=15,merge_min=0),memory_page_image_max=0,memory_page_max=5MB,os_cache_dirty_max=0,os_cache_max=0,prefix_compression=true,prefix_compression_min=4,source=,split_deepen_min_child=0,split_deepen_per_child=0,split_pct=90,type=file,value_format=u",
"type" : "file",
"uri" : "statistics:table:index-44-6797839137631957852",
"LSM" : {
...
},
"block-manager" : {
...
},
"btree" : {
...
},
"cache" : {
...
},
"cache_walk" : {
...
},
"compression" : {
...
},
"cursor" : {
...
},
"reconciliation" : {
...
},
"session" : {
...
},
"transaction" : {
...
}
},
"cuisine_1" : {
...
},
"borough_1_cuisine_1" : {
...
},
"borough_1_address.zipcode_1" : {
...
},
"indexBuilds" : [ ],
"totalIndexSize" : 704512,
"totalSize" : 10375168,
"indexSizes" : {
"_id_" : 241664,
"cuisine_1" : 147456,
"borough_1_cuisine_1" : 159744,
"borough_1_address.zipcode_1" : 155648
},
"scaleFactor" : 1,
"ok" : 1
}

indexDetails 필드의 인덱스를 필터링하려면 indexDetailsKey 옵션을 사용하여 인덱스 키를 지정하거나 indexDetailsName을 사용하여 인덱스 이름을 지정할 수 있습니다. 컬렉션의 인덱스 키와 이름을 검색하려면 db.collection.getIndexes()를 사용합니다.

다음 인덱스가 주어집니다.

{
"ns" : "test.restaurants",
"v" : 1,
"key" : {
"borough" : 1,
"cuisine" : 1
},
"name" : "borough_1_cuisine_1"
}

다음 작업은 indexDetails 문서를 indexDetailsKey 문서에 정의된 단일 인덱스로 필터링합니다.

db.restaurants.stats(
{
'indexDetails' : true,
'indexDetailsKey' :
{
'borough' : 1,
'cuisine' : 1
}
}
)

다음 작업은 indexDetails 문서를 indexDetailsName 문서에 정의된 단일 인덱스로 필터링합니다.

db.restaurants.stats(
{
'indexDetails' : true,
'indexDetailsName' : 'borough_1_cuisine_1'
}
)

두 작업 모두 동일한 출력을 반환합니다.

{
"ns" : "test.restaurants",
"size" : 7557340,
"count" : 25359,
"avgObjSize" : 298,
"storageSize" : 9670656,
"freeStorageSize" : 6660096,
"capped" : false,
"wiredTiger" : {
...
},
"nindexes" : 4,
"indexDetails" : {
"borough_1_cuisine_1" : {
"metadata" : {
"formatVersion" : 8
},
"LSM" : {
...
},
"block-manager" : {
...
},
"btree" : {
...
},
"cache" : {
...
},
"cache_walk" : {
...
},
"compression" : {
...
},
"cursor" : {
...
},
"reconciliation" : {
...
},
"session" : {
...
},
"transaction" : {
...
}
}
},
"indexBuilds" : [ ],
"totalIndexSize" : 704512,
"totalSize" : 10375168,
"indexSizes" : {
"_id_" : 241664,
"cuisine_1" : 147456,
"borough_1_cuisine_1" : 159744,
"borough_1_address.zipcode_1" : 155648
},
"scaleFactor" : 1,
"ok" : 1
}

출력에 대한 설명은 출력 세부 정보를 참조하세요.

다음도 참조하세요.

돌아가기

db.collection.replaceOne()

이 페이지의 내용