View a markdown version of this page

인덱스 속성: 숨김 - Amazon DocumentDB

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

인덱스 속성: 숨김

Amazon DocumentDB는 Amazon DocumentDB 8.0.1부터 hidden 인덱스 속성을 지원합니다.

숨겨진 인덱스는 쿼리 플래너에 표시되지 않으며 쿼리를 지원하는 데 사용할 수 없습니다. 플래너에서 인덱스를 숨기면 인덱스를 실제로 삭제하지 않고도 인덱스 삭제의 잠재적 영향을 평가할 수 있습니다. 영향이 음수인 경우 삭제된 인덱스를 다시 생성하는 대신 인덱스를 숨길 수 있습니다.

hidden 속성은 단일 필드, 복합, 멀티키, 텍스트, 지리 공간 및 벡터 인덱스를 포함한 모든 인덱스 유형에서 지원됩니다.

동작

플래너에서 숨기는 것 외에도 숨겨진 인덱스는 완전히 유지 관리되고 적용됩니다. 예제:

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

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

  • 숨겨진 인덱스는 listIndexesdb.collection.getIndexes() 결과에 포함됩니다.

  • 숨겨진 인덱스는 컬렉션에 대한 쓰기 작업에서 업데이트되며 디스크 공간과 메모리를 계속 사용합니다. 따라서 db.collection.stats() 및와 같은 통계 작업에 포함됩니다$indexStats.

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

제한 사항

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

  • cursor.hint()를 사용하여 숨겨진 인덱스를 강제로 사용할 수 없습니다.

  • $merge on 필드에 필요한 고유 인덱스가 숨겨져 있으면가 실패합니다. 를 실행하기 전에 인덱스를 표시합니다$merge.

예제

숨겨진 인덱스 생성

숨겨진 상태에서 인덱스를 생성하려면 db.collection.createIndex() 메서드를 사용하고 인덱스 정의true에서 hidden 옵션을 로 설정합니다.

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

db.collection.createIndex( { "productId": 1 }, { "name": "productId_1", "hidden": true } )

확인하려면 컬렉션listIndexes에서 db.collection.getIndexes() 또는를 실행합니다. 숨겨진 인덱스는 정의"hidden": true에를 포함합니다.

db.collection.getIndexes() [ { "v": 4, "key": { "_id": 1 }, "name": "_id_" }, { "v": 4, "key": { "productId": 1 }, "name": "productId_1", "hidden": true } ]

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

기존 인덱스 숨기기

collMod 명령을 사용하여 기존 인덱스를 숨깁니다. name 또는 로 인덱스를 식별하고를 hiddenkeyPattern설정합니다true.

다음 예제에서는 인덱스를 이름으로 숨깁니다.

db.runCommand({ collMod: "collection", index: { name: "productId_1", // Specify the index name hidden: true } })

키 패턴으로 인덱스를 식별할 수도 있습니다.

db.runCommand({ collMod: "collection", index: { keyPattern: { productId: 1 }, // Specify the index key specification document hidden: true } })

기존 인덱스 숨기기 해제

숨겨진 인덱스를 다시 표시하려면가 로 hidden 설정된 collMod 명령을 사용합니다false.

db.runCommand({ collMod: "collection", index: { name: "productId_1", hidden: false } })

인덱스는 숨겨져 있는 동안 완전히 유지되므로 숨기지 않으면 즉시 사용할 수 있습니다.