Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
Administración

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

A partir de MongoDB 6.0.12 (y 5.0.22), puedes descartar el índice para una clave de partición con hash.

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

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

Importante

Solo debe eliminar un índice de clave de fragmento con hash de una colección si existe un índice sin hash compatible en la clave de fragmento. Si no existe un índice sin hash compatible en la clave de fragmento, las consultas que filtran por la clave de fragmento realizan una escaneo de colección. Para ver qué índices existen en una colección, utiliza 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. Para incluir la colección en futuras rondas de balanceo, recrea el índice de la clave de partición.

  • 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, puede ejecutar una agregación utilizando la etapa para confirmar que no queden documentos $shardedDataDistribution 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 fragmento del clúster.

3

Ejecute el siguiente comando para descartar el índice:

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

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

sh.startBalancer()

Volver

Levantadora grande clara

En esta página