Hidden Indexes
숨겨진 인덱스는 쿼리 플래너 에 표시되지 않으며 쿼리 를 지원 하는 데 사용할 수 없습니다.
플래너에서 인덱스를 숨기면 실제로 인덱스를 제거하지 않고도 인덱스 제거의 잠재적 영향을 평가할 수 있습니다. 영향이 부정적인 경우 제거된 인덱스를 다시 생성할 필요 없이 인덱스 숨기기를 해제할 수 있습니다.
행동
숨겨진 인덱스는 플래너에서 숨겨지는 것을 제외하고는 숨겨지지 않은 인덱스처럼 동작합니다. 즉
숨겨진 인덱스가 고유 인덱스인 경우 인덱스는 여전히 문서에 고유한 제약 조건을 적용합니다.
숨겨진 인덱스가 TTL 인덱스인 경우 인덱스는 여전히 문서를 만료시킵니다.
숨겨진 인덱스는
listIndexes
및db.collection.getIndexes()
결과에 포함됩니다.숨겨진 인덱스는 컬렉션에 쓰기 작업 시 업데이트되며 디스크 공간과 메모리를 계속 소모합니다. 따라서
db.collection.stats()
및$indexStats
등의 다양한 통계 연산에 포함됩니다.숨기지 않은 인덱스를 숨기거나 숨겨진 인덱스를 숨기면
$indexStats
가 초기화됩니다. 이미 숨겨진 인덱스를 숨기거나 이미 숨기지 않은 인덱스를 숨기면$indexStats
가 재설정되지 않습니다.
제한 사항
인덱스를 숨기려면 featureCompatibilityVersion을
5.0
이상으로 설정해야 합니다._id
인덱스는 숨길 수 없습니다.숨겨진 인덱스를
cursor.hint()
할 수 없습니다.
예시
숨겨진 인덱스 생성
hidden
인덱스를 만들려면 db.collection.createIndex()
메서드를 true
로 설정된 숨김 옵션과 함께 사용합니다.
참고
db.collection.createIndex()
와 함께 hidden
옵션을 사용하려면 featureCompatibilityVersion이 5.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
인 경우에만 반환됩니다.
기존 인덱스 숨기기
참고
인덱스를 숨기려면 featureCompatibilityVersion을
5.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
인덱스의 일부로 표시되지 않습니다.
인덱스는 숨겨진 동안 완전히 유지되므로 숨김이 해제되면 인덱스를 즉시 사용할 수 있습니다.