다음을 통해 공유


백그라운드 인덱싱

적용 대상: MongoDB vCore

백그라운드 인덱싱은 데이터베이스 시스템이 다른 쿼리 또는 업데이트를 차단하지 않고 컬렉션에서 인덱싱 작업을 수행할 수 있게 하는 기술입니다. Azure Cosmos DB for MongoDB vCore는 백그라운드 인덱싱 요청을 수락하고 백그라운드에서 비동기적으로 수행합니다.

I/O 요구 사항이 더 높은 더 작은 계층 또는 워크로드로 작업하는 경우 빈 컬렉션에 대한 인덱스를 미리 정의하고 백그라운드 인덱싱에 의존하지 않는 것이 좋습니다.

Important

빈 컬렉션에 인덱스를 만드는 unique 것이 좋습니다. 이 인덱스는 포그라운드로 생성되므로 읽기 및 쓰기가 차단됩니다.

컬렉션은 여전히 비어 있는 동안 쿼리 조건자를 기반으로 인덱스를 미리 만드는 것이 좋습니다. 읽기/쓰기가 많은 대규모 컬렉션에서 푸시되는 경우 리소스 경합을 방지합니다.

인덱스 빌드 모니터링

명령을 currentOp()사용하여 인덱스 빌드의 진행률을 알아볼 수 있습니다.

db.currentOp("db_name":"<db_name>", "collection_name":"<collection_name>")
  • db_name 는 선택적 매개 변수입니다.
  • collection_name 는 선택적 매개 변수입니다.
// Output for reviewing build status
{
inprog: [
  {
    shard: 'defaultShard',
    active: true,
    type: 'op',
    opid: '10000003049:1701252500485346',
    op_prefix: Long("10000003049"),
    currentOpTime: ISODate("2024-06-24T10:08:20.000Z"),
    secs_running: Long("2"),
    command: {createIndexes: '' },
    op: 'command',
    waitingForLock: true
  },
  {
    shard: 'defaultShard',
    active: true,
    type: 'op',
    opid: '10000003050:1701252500499914',
    op_prefix: Long("10000003050"),
    currentOpTime: ISODate("2024-06-24T10:08:20.000Z"),
    secs_running: Long("2"),
    command: {
      createIndexes: 'BRInventory', },
      indexes: [
        {
          v:2,
          key: {vendorItemId: 1, vendorId: 1, itemType: 1},
          name: 'compound_idx'
        }
      ],
      '$db': 'test'
      op: 'command',
      waitingForLock: false,
      progress: {
         blocks_done: Long("12616"),
         blocks_done: Long("1276873"),
         documents_d: Long("0"),
         documents_to: Long("0")
      },
      msg: 'Building index.Progress 0.0098803875. Waiting on op_prefix: 10000000000.'
    }
  ],
  ok: 1
}

제한 사항

  • 백그라운드에서 고유 인덱스를 만들 수 없습니다. 빈 컬렉션에서 만든 다음 데이터를 로드하는 것이 가장 좋습니다.
  • 백그라운드 인덱싱은 단일 컬렉션 내에서 순차적으로 수행됩니다. 그러나 서로 다른 컬렉션에 대한 동시 인덱스 빌드 수는 구성할 수 있습니다(기본값: 2).

다음 단계