Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Descartar un índice de clave de partición con hash

A partir de MongoDB 7.0.3 (y 6.0.12 y 5.0.22), puedes descartar el índice de una clave de fragmentación encriptada.

Esto puede acelerar la inserción de datos para colecciones particionadas con una clave de partición con hash.

Eliminar un índice innecesario puede acelerar las operaciones CRUD. Cada operación CRUD tiene que actualizar todos los índices relacionados con un documento. Remover un índice puede aumentar la velocidad de todas las operaciones CRUD.

Importante

Solo deberías descartar un índice de clave de partición con hash de una colección si existe un índice de soporte que no sea encriptada sobre la clave de partición. Si no existe un índice de apoyo no disperso en la clave de partición, las consultas que filtren por la clave de partición ejecutarán un escaneo de colección. Para ver qué índices existen en una colección, utilice db.collection.getIndexes().

Al eliminar un índice de clave de partición con hash, ten en cuenta lo siguiente:

  • El servidor desactiva el equilibrio para tu colección y la excluye de futuras rondas de equilibrio. Como resultado, si más tarde agrega o remover una partición, el servidor no podrá reequilibrar los datos de la colección. Para incluir la colección en futuras rondas de equilibrio, vuelva a crear el índice de clave de partición con hash.

  • Cuando se descarta el índice de la clave de fragmentación, el eliminador de rangos no limpia los elementos huérfanos restantes en la colección. Debes confirmar que no existan documentos huérfanos en tu colección antes de eliminar el índice de clave de partición con hash. Consulta el siguiente procedimiento para confirmar que no existen documentos huérfanos en tu colección.

1

Ejecuta el siguiente comando para detener el balanceador:

sh.stopBalancer()

Solo puedes ejecutar sh.stopBalancer() en mongos. sh.stopBalancer() produce un error si se ejecuta en mongod.

2

A partir de MongoDB 6.0.3, puedes ejecutar una agregación utilizando la etapa $shardedDataDistribution para confirmar que no quedan documentos huérfanos:

db.aggregate([
{ $shardedDataDistribution: {} },
{ $match: { "ns": "<database>.<collection>" } }
])

$shardedDataDistribution tiene una salida similar a la siguiente:

[
{
"ns": "test.names",
"shards": [
{
"shardName": "shard-1",
"numOrphanedDocs": 0,
"numOwnedDocuments": 6,
"ownedSizeBytes": 366,
"orphanedSizeBytes": 0
},
{
"shardName": "shard-2",
"numOrphanedDocs": 0,
"numOwnedDocuments": 6,
"ownedSizeBytes": 366,
"orphanedSizeBytes": 0
}
]
}
]

Asegúrese de que "numOrphanedDocs" sea 0 para cada partición en el clúster.

3

Ejecute el siguiente comando para descartar el índice:

db.collection.dropIndex("<index name>")
4

Ejecuta el siguiente comando para reiniciar el balanceador en el clúster:

sh.startBalancer()