バックグラウンド インデックス作成は、データベース システムが他のクエリや更新をブロックすることなく、コレクションに対してインデックス作成操作を実行できるようにする手法です。 Azure DocumentDB はバックグラウンド インデックス作成要求を受け入れ、バックグラウンドで非同期的に実行します。
I/O が高い小さいレベルまたはワークロードを使用する場合は、空のコレクションにインデックスを事前に定義し、バックグラウンド インデックス作成に依存しないようにします。
Important
一意のインデックスはフォアグラウンドで構築され、読み取りと書き込みをブロックするため、空のコレクションに一意のインデックスを作成します。 コレクションがまだ空の間にデータを挿入する前に、クエリ述語に基づいてインデックスを定義します。 これにより、読み取り/書き込みトラフィックが多い大規模なコレクションでのリソースの競合が軽減されます。
インデックスのビルドを監視する
コマンド 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)。