Docs Menu
Docs Home
/ /

unshardCollection (comando de base de datos)

unshardCollection

Desfragmenta una colección fragmentada existente y mueve los datos de la colección a un solo fragmento. Al desfragmentar una colección, esta no se puede particionar en varios. Seeliminan los fragmentos y la clave del fragmento.

Nuevo en la versión 8.0.

Tip

En mongosh, este comando también se puede ejecutar a través sh.unshardCollection() de.

Los métodos asistente son convenientes para usuarios de mongosh, pero es posible que no proporcionen el mismo nivel de información que los comandos de base de datos. En los casos en que no se necesite la conveniencia o se requieran campos de retorno adicionales, utiliza el comando de base de datos.

Este comando debe ejecutarse en la base de datos admin.

Si la colección tiene una configuración de zona aplicada, primero debe eliminar las asociaciones de rango y los fragmentos de la zona antes de desfragmentar la colección. Para obtener más información, consulte Desfragmentar zonas.

Nota

Desfragmentar una colección es una operación de escritura intensiva que puede resultar en un aumento en la tasa de crecimiento del registro de operaciones. Para mitigar esto, considere los siguientes cambios de configuración:

  • Para evitar un crecimiento ilimitado del oplog, establezca un tamaño de oplog fijo.

  • Para reducir la posibilidad de que los secundarios queden obsoletos, aumente el tamaño del oplog.

Para obtener más detalles, consulte el registro de operaciones del conjunto de réplicas.

Este comando está disponible en implementaciones alojadas en los siguientes entornos:

  • MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB

  • MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.

  • MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube

Nota

Esta tarea no está disponible en los niveles gratuito o flexible de MongoDB Atlas.

No se puede utilizar unshardCollection para colecciones de cifrado consultable.

db.adminCommand( {
unshardCollection: "<database>.<collection>",
toShard: "<shard-id>"
} )
Campo
Tipo
Necesidad
Descripción

unshardCollection

string

Requerido

Especifica la base de datos y la colección que se van a desfragmentar.

toShard

string

Opcional

Especifica el ID del fragmento del destinatario. A medida que MongoDB desfragmenta la colección, mueve los datos de la colección desde sus fragmentos actuales a este fragmento específico.

Si no se especifica, el clúster selecciona el fragmento con la menor cantidad de datos.

Antes de desfragmentar su colección, asegúrese de cumplir con los siguientes requisitos:

  • Su aplicación puede tolerar un periodo de dos segundos en el que la colección afectada bloquea las escrituras. Durante este periodo, la aplicación experimenta un aumento de latencia.

  • Su base de datos cumple estos requisitos de recursos:

    • Asegúrese de que el fragmento al que va a mover la colección tenga suficiente espacio de almacenamiento para la colección y sus índices. El fragmento de destino requiere al menos ( Collection storage size + Index Size ) * 2 bytes disponibles.

    • Asegúrese de que su capacidad de E/S esté por debajo del 50%.

    • Asegúrese de que la carga de su CPU esté por debajo del 80%.

Para desfragmentar una colección que utiliza fragmentación de zona, primero debe detener el balanceador y luego eliminar el rango y el fragmento de la zona.

El siguiente ejemplo desfragmenta la colección sales.eu_accounts:

db.adminCommand( {
unshardCollection: "sales.eu_accounts"
} )

El siguiente ejemplo desfragmenta las colecciones sales.us_accounts y coloca los datos de la colección en shard1:

db.adminCommand( {
unshardCollection: "sales.eu_accounts",
toShard: "shard1"
} )

Volver

Desfragmentación

En esta página