

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

# 인덱스 유지 관리
<a name="maintaining-indexes"></a>

## 인덱스 팽창
<a name="maintaining-indexes-bloat"></a>

Amazon DocumentDB는 다중 버전 동시성 제어(MVCC)를 사용하여 동시 트랜잭션을 관리합니다. 문서가 삭제되거나 업데이트되면 이전 버전은 컬렉션 및 인덱스에 ‘데드’ 버전으로 유지됩니다. 폐영역 회수 프로세스는 향후 작업을 위해 이러한 데드 버전에서 공간을 자동으로 회수합니다.

인덱스 팽창은 데드 버전 또는 더 이상 사용되지 않는 인덱스 항목이 누적되거나 페이지 내에 조각화되면서 컬렉션의 인덱스가 커질 때 발생합니다. 보고된 백분율은 향후 인덱스 항목에서 사용할 수 있는 인덱스 공간의 양을 나타냅니다. 이 팽창은 버퍼 캐시와 스토리지 모두에서 공간을 소비합니다. 팽창을 제거하려면 인덱스를 다시 빌드해야 합니다.

**예:** 다음 명령을 실행하여 인덱스의 미사용 스토리지를 확인합니다.

```
db.coll.aggregate({$indexStats:{}});
```

다음과 비슷한 결과가 반환됩니다.

```
{ 
    "name" : "_id_",
    "key" : { 
        "_id" : 1 
    },
    "host" : "devbox-test.localhost.a2z.com:27317",
    "size" : NumberLong(827392),
    "accesses" : {
        "ops" : NumberLong(40000),
        "docsRead" : NumberLong(46049),
        "since" : ISODate("2025-04-03T21:44:51.251Z") 
    },
    "cacheStats" : {
        "blksRead" : NumberLong(264),
        "blksHit" : NumberLong(140190),
        "hitRatio" : 99.8121
    }, 
    "unusedStorageSize" : {
        "unusedSizeBytes" : 409600,
        "unusedSizePercent" : 49.51
    }
}
```

전체 컬렉션을 스캔해야 하는 reIndex 명령을 사용하여 가동 중지 없이 인덱스를 재구축할 수 있습니다. reIndex를 사용한 인덱스 유지 관리를 참조하세요.

## reIndex를 사용한 인덱스 유지 관리
<a name="maintaining-indexes-reindex"></a>

reIndex는 인덱스를 다시 빌드하는 데 사용되는 명령입니다. 일반적으로 인덱스가 손상되거나 비효율적일 때 사용됩니다. 시간이 지남에 따라 많은 업데이트, 삽입 또는 삭제로 인해 인덱스에 미사용 스페이스가 누적되어 성능이 저하될 수 있습니다. 리인덱싱은 사용하지 않는 스페이스를 제거하고 인덱스의 효율성을 복원하는 데 도움이 됩니다.

**reIndex 지침**
+ reIndex는 Amazon DocumentDB 5.0 이상에서만 지원됩니다.
+ reIndex는 항상 백그라운드에서 실행됩니다.
+ Amazon DocumentDB는 백그라운드에서 단일 인덱스의 재인덱스를 지원하므로 여러 작업자가 사용할 수 있습니다. 이전 인덱스는 reIndex 프로세스가 실행 중일 때 쿼리에서 사용할 수 있습니다.
+ Amazon DocumentDB는 currentOp를 통한 인덱싱 진행률 보고서를 지원합니다. 인덱스 생성 중에 볼 수 있는 인덱스 빌드 단계와 유사한 인덱스 빌드 단계를 볼 수 있습니다. 유일한 차이점은 reIndex에는 고유 여부와 관계없이 항상 8개의 단계가 있다는 것입니다. "빌딩 인덱스: 정렬 키 2" 단계가 없습니다.
+ reIndex는 동일한 컬렉션에서 인덱스 관련 명령인 createIndexes, dropIndexes, collMod, renameCollection을 제외한 모든 명령과 동시에 실행할 수 있습니다.
+ reIndex는 현재 텍스트, 지리 공간, 벡터 및 부분 인덱스에 대해 지원되지 않습니다.

**reIndex 빌드**

다음 명령을 사용하여 인덱스를 재구축합니다.

```
db.runCommand({ reIndex: "collection-name", index: "index-name"})
```

필요에 따라 재구축 프로세스에 할당된 작업자 수를 제어할 수도 있습니다.

```
db.runCommand({ reIndex: "collection-name", index: "index-name", workers: number })
```

Java를 사용한 인덱스 관리에 대한 자세한 내용은 [Java를 사용한 Amazon DocumentDB의 인덱스 관리를](https://docs.aws.amazon.com/documentdb/latest/devguide/index-management-java.html) 참조하세요.