Delen via


Achtergrondindexering

Achtergrondindexering is een techniek waarmee een databasesysteem indexeringsbewerkingen op een verzameling kan uitvoeren zonder andere query's of updates te blokkeren. Azure DocumentDB accepteert de aanvraag voor het indexeren op de achtergrond en voert deze asynchroon op de achtergrond uit.

Wanneer u kleinere lagen of workloads met een hoge I/O gebruikt, worden vooraf gedefinieerde indexen voor lege verzamelingen gebruikt en hoeft u niet te vertrouwen op indexering op de achtergrond.

Belangrijk

Creëer unieke indexen voor een lege verzameling, omdat unieke indexen worden aangemaakt op de voorgrond en daarmee lees- en schrijfbewerkingen blokkeren. Definieer indexen op basis van querypredicaten voordat u gegevens invoegt terwijl de verzameling nog steeds leeg is. Als u dit doet, vermindert u resourceconflicten in grote verzamelingen met intensief lees-/schrijfverkeer.

Indexopbouw bewaken

We kunnen meer te weten komen over de voortgang van de indexbuild met behulp van de opdracht currentOp().

db.currentOp("db_name":"<db_name>", "collection_name":"<collection_name>")
  • db_name is een optionele parameter.
  • collection_name is een optionele parameter.
// 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
}

Beperkingen

  • Er kunnen geen unieke indexen op de achtergrond worden gemaakt. U kunt ze het beste maken in een lege verzameling en vervolgens de gegevens laden.
  • Achtergrondindexering wordt sequentieel uitgevoerd binnen één verzameling. Het aantal gelijktijdige indexopbouw op verschillende collecties is echter configureerbaar (standaard: 2).

Volgende stappen