次の方法で共有


バックグラウンド インデックス作成

適用対象: MongoDB 仮想コア

バックグラウンド インデックス作成は、データベース システムが他のクエリや更新をブロックすることなく、コレクションに対してインデックス作成操作を実行できるようにする手法です。 Azure Cosmos DB for MongoDB 仮想コアは、バックグラウンド インデックス作成要求を受け取り、それをバックグラウンドで非同期的に実行します。

I/O ニーズが高い小さいレベルまたはワークロードを使用する場合は、空のコレクションにインデックスを事前定義し、バックグラウンド インデックス作成に依存しないようにすることをお勧めします。

重要

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
}

制限事項

  • 一意なインデックスをバックグラウンドで作成することはできません。 空のコレクションに作成してからデータを読み込むことをお勧めします。
  • バックグラウンドのインデックス作成は、1 つのコレクション内で順次実行されます。 ただし、異なるコレクションに対する同時インデックス ビルドの数が構成可能です (既定値: 2)。

次のステップ