Docs Menu

Hidden Indexes

이 페이지의 내용

숨겨진 인덱스는 쿼리 플래너에 표시되지 않으며 쿼리를 지원하는 데 사용할 수 없습니다.

플래너에서 인덱스를 숨기면 실제로 인덱스를 제거하지 않고도 인덱스 제거의 잠재적 영향을 평가할 수 있습니다. 영향이 부정적인 경우 제거된 인덱스를 다시 생성할 필요 없이 인덱스 숨기기를 해제할 수 있습니다.

숨겨진 인덱스는 플래너에서 숨겨지는 것을 제외하고는 숨겨지지 않은 인덱스처럼 동작합니다. 예시:

  • 숨겨진 인덱스가 고유 인덱스인 경우 인덱스는 여전히 문서에 고유한 제약 조건을 적용합니다.

  • 숨겨진 인덱스가 TTL 인덱스인 경우 인덱스는 여전히 문서를 만료시킵니다.

  • 숨겨진 인덱스가 listIndexesdb.collection.getIndexes() 결과에 포함되어 있습니다.

  • 숨겨진 인덱스는 컬렉션에 쓰기 작업 시 업데이트되며 디스크 공간과 메모리를 계속 소모합니다. 따라서 db.collection.stats()$indexStats 등의 다양한 통계 연산에 포함됩니다.

  • 숨기지 않은 인덱스를 숨기거나 숨겨진 인덱스를 숨기면 $indexStats가 초기화됩니다. 이미 숨겨진 인덱스를 숨기거나 이미 숨기지 않은 인덱스를 숨기면 $indexStats가 재설정되지 않습니다.

hidden 인덱스를 만들려면 db.collection.createIndex() 메서드를 true로 설정된 숨김 옵션과 함께 사용합니다.

참고

db.collection.createIndex()와 함께 hidden 옵션을 사용하려면 featureCompatibilityVersion5.0 이상으로 설정되어 있어야 합니다.

예를 들어, 다음 작업은 borough 필드에 숨겨진 오름차순 인덱스를 생성합니다.

db.addresses.createIndex(
{ borough: 1 },
{ hidden: true }
);

확인하려면 addresses 컬렉션에서 db.collection.getIndexes()을(를) 실행하세요.

db.addresses.getIndexes()

이 작업은 다음 정보를 반환합니다.

[
{
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_"
},
{
"v" : 2,
"key" : {
"borough" : 1
},
"name" : "borough_1",
"hidden" : true
}
]

인덱스 옵션 hidden은(는) 값이 true인 경우에만 반환됩니다.

참고

  • 인덱스를 숨기려면 featureCompatibilityVersion5.0 이상으로 설정해야 합니다.

  • _id 인덱스는 숨길 수 없습니다.

기존 인덱스 를 숨기려면 collMod 명령 또는 mongosh 도우미 db.collection.hideIndex() 를 사용할 수 있습니다.

예를 들어 숨기지 않고 인덱스를 생성합니다.

db.restaurants.createIndex( { borough: 1, ratings: 1 } );

인덱스을 숨기려면 다음 중 하나를 지정할 수 있습니다.

  • db.collection.hideIndex() 메서드에 대한 인덱스 키 사양 문서:

    db.restaurants.hideIndex( { borough: 1, ratings: 1 } ); // Specify the index key specification document
  • db.collection.hideIndex() 메서드에 대한 인덱스 이름:

    db.restaurants.hideIndex( "borough_1_ratings_1" ); // Specify the index name

확인하려면 restaurants 컬렉션에서 db.collection.getIndexes()을(를) 실행하세요.

db.restaurants.getIndexes()

이 작업은 다음 정보를 반환합니다.

[
{
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_"
},
{
"v" : 2,
"key" : {
"borough" : 1,
"ratings" : 1
},
"name" : "borough_1_ratings_1",
"hidden" : true
}
]

인덱스 옵션 hidden은(는) 값이 true인 경우에만 반환됩니다.

숨겨진 인덱스를 숨김 해제하려면 collMod 명령 또는 mongosh 헬퍼 db.collection.unhideIndex()를 사용하면 됩니다. 다음 두 가지 중 하나를 지정할 수 있습니다.

  • db.collection.unhideIndex() 메서드에 대한 인덱스 키 사양 문서:

    db.restaurants.unhideIndex( { borough: 1, city: 1 } ); // Specify the index key specification document
  • db.collection.unhideIndex() 메서드에 대한 인덱스 이름:

    db.restaurants.unhideIndex( "borough_1_ratings_1" ); // Specify the index name

확인하려면 restaurants 컬렉션에서 db.collection.getIndexes()을(를) 실행하세요.

db.restaurants.getIndexes()

이 작업은 다음 정보를 반환합니다.

[
{
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_"
},
{
"v" : 2,
"key" : {
"borough" : 1,
"ratings" : 1
},
"name" : "borough_1_ratings_1"
}
]

값이 true인 경우에만 필드가 반환되므로 인덱스 옵션 hidden은(는) 더 이상 borough_1_ratings_1 인덱스의 일부로 표시되지 않습니다.

인덱스는 숨겨진 동안 완전히 유지되므로 숨김이 해제되면 인덱스를 즉시 사용할 수 있습니다.

이 페이지의 내용