Háttérindexelés

A háttérindexelés olyan technika, amellyel az adatbázisrendszer indexelési műveleteket hajthat végre egy gyűjteményen anélkül, hogy más lekérdezéseket vagy frissítéseket blokkolhat. Az Azure DocumentDB elfogadja a háttérindexelési kérést, és aszinkron módon végrehajtja a háttérben.

Amikor kisebb szinteket vagy magas I/O-val rendelkező munkaterheléseket használ, határozza meg előre az üres gyűjtemények indexeit, és kerülje a háttérindexelést.

Important

Hozzon létre egyedi indexeket egy üres gyűjteményen, mert az egyedi indexek az előtérben épülnek fel, és blokkolják az olvasásokat és írásokat. Definiáljon indexeket lekérdezési predikátumok alapján, mielőtt adatokat szúr be, miközben a gyűjtemény még üres. Ez csökkenti az erőforrás-versengést a nagy méretű, olvasási-írási forgalommal rendelkező gyűjteményekben.

Indexépítés figyelése

A parancs currentOp()használatával megismerhetjük az index buildelésének előrehaladását.

db.currentOp("db_name":"<db_name>", "collection_name":"<collection_name>")
  • db_name nem kötelező paraméter.
  • collection_name nem kötelező paraméter.
// 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
}

Limitations

  • A háttérben nem hozhatók létre egyedi indexek. A legjobb, ha üres gyűjteményben hozza létre őket, majd betölti az adatokat.
  • A háttérindexelés egymás után történik egyetlen gyűjteményen belül. A különböző gyűjteményekre épülő egyidejű indexek száma azonban konfigurálható (alapértelmezett: 2).

Következő lépések