Bagikan melalui


Pengindeksan latar belakang

Pengindeksan latar belakang adalah teknik yang memungkinkan sistem database melakukan operasi pengindeksan pada koleksi tanpa memblokir kueri atau pembaruan lain. Azure DocumentDB menerima permintaan pengindeksan latar belakang dan secara asinkron melakukannya di latar belakang.

Saat menggunakan tingkat atau beban kerja yang lebih kecil dengan I/O tinggi, definisikan terlebih dahulu indeks pada koleksi kosong dan hindari bergantung pada pengindeksan latar belakang.

Penting

Buat indeks unik pada koleksi kosong karena indeks unik dijalankan di latar depan dan memblokir proses baca dan tulis. Tentukan indeks berdasarkan predikat kueri sebelum menyisipkan data saat koleksi masih kosong. Melakukan ini mengurangi kontensi sumber daya dalam koleksi besar dengan lalu lintas baca-tulis yang tinggi.

Memantau penyusunan indeks

Kita dapat mempelajari tentang kemajuan build indeks menggunakan perintah currentOp().

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

Keterbatasan

  • Indeks unik tidak dapat dibuat di latar belakang. Yang terbaik adalah membuatnya pada koleksi kosong lalu memuat data.
  • Pengindeksan latar belakang dilakukan secara berurutan dalam satu koleksi. Namun, jumlah build indeks simultan pada koleksi yang berbeda dapat dikonfigurasi (default: 2).

Langkah Selanjutnya