Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
L’indexation en arrière-plan est une technique qui permet à un système de base de données d’effectuer des opérations d’indexation sur une collection sans bloquer d’autres requêtes ou mises à jour. Azure DocumentDB accepte la demande d’indexation en arrière-plan et l’exécute de manière asynchrone en arrière-plan.
Lorsque vous utilisez des paliers ou des charges de travail plus petits avec des E/S élevées, prédéfinissez les index sur des collections vides et évitez de vous appuyer sur l’indexation en arrière-plan.
Important
Créez des index uniques sur une collection vide, car les index uniques sont générés au premier plan et bloquent les lectures et les écritures. Définissez des index en fonction des prédicats de requête avant d’insérer des données pendant que la collection est toujours vide. Cela réduit la concurrence des ressources dans les grandes collections avec un trafic intense en lecture-écriture.
Surveiller la génération d’index
Nous pouvons en savoir plus sur la progression de la génération d’index à l’aide de la commande currentOp().
db.currentOp("db_name":"<db_name>", "collection_name":"<collection_name>")
-
db_nameest un paramètre facultatif. -
collection_nameest un paramètre facultatif.
// 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
}
Limites
- Les index uniques ne peuvent pas être créés en arrière-plan. Il est préférable de les créer sur une collection vide, puis de charger les données.
- L’indexation en arrière-plan est effectuée séquentiellement au sein d’une collection unique. Toutefois, le nombre de builds simultanées d’index sur différentes collections est configurable (par défaut : 2).