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
/
Manual de base de datos
/

FAQ: Indexes

Este documento aborda algunas preguntas comunes sobre MongoDB índice. Para más información sobre índices, consulta Índices.

Para crear un índice en una colección, utiliza la db.collection.createIndex()Método. Crear un índice es una operación administrativa. En general, las aplicaciones no deberían llamar a con db.collection.createIndex() regularidad.

Nota

La creación de índices puede afectar el rendimiento; consulte ¿Cómo afecta la creación de un índice al rendimiento de la base de datos? Los administradores deben considerar las implicaciones de rendimiento antes de crear índices.

La creación de índices de MongoDB en una colección poblada requiere un bloqueo exclusivo de lectura-escritura contra la colección. Las operaciones que necesitan un bloqueo de lectura o escritura en la colección deben esperar hasta que el mongod libere el bloqueo.

Para obtener más información sobre el proceso de creación de índices, consulta Creación de índices en colecciones pobladas.

Las creación de índices en sets de réplicas tienen consideraciones específicas de rendimiento y riesgos. Consulta Creación de índices en entornos replicados para obtener más información.

Para obtener información sobre las operaciones actuales de creación de índices en ejecución, consulta Operaciones de indexación activas.

Para finalizar una creación de índices en curso, utiliza los db.collection.dropIndex() o sus asistentes de shell dropIndex() o dropIndexes. No uses db.killOp() para terminar la creación de índices en curso en sets de réplicas o clústeres particionados.

No se puede finalizar la compilación de un índice replicado en miembros secundarios de un conjunto de réplicas. Primero, debe eliminar el índice en el primario. El primario detiene la compilación del índice y crea una abortIndexBuild entrada de registro de operaciones asociada. Los secundarios que replican la abortIndexBuild entrada de registro de operaciones detienen la compilación del índice en curso y descartan el trabajo de compilación.

Para obtener más información, consulte Detener creación de índices en curso.

Para enumerar los índices de una colección, utiliza el método db.collection.getIndexes().

Para inspeccionar cómo MongoDB procesa una consulta, usa el método explain().

Diversos factores determinan qué campos indexar, incluyendo la selectividad y el soporte para múltiples formas del query. Para obtener más información, consulta Consideraciones operativas para índices y Estrategias de indexación.

El db.collection.stats() incluye un documento indexSizes que proporciona información sobre el tamaño de cada índice en la colección.

Las operaciones de escritura pueden requerir actualizaciones en los índices:

  • Si una operación de escritura modifica un campo indexado, MongoDB actualiza todos los índices que tienen el campo modificado como clave.

Por lo tanto, si tu aplicación realiza muchas operaciones de guardar, los índices podrían afectar el rendimiento.

Si una Operación inserta una gran cantidad de datos aleatorios (por ejemplo, índices encriptados) en un campo indexado, el rendimiento de las inserciones puede disminuir. Las inserciones masivas de datos aleatorios generan entradas de índice aleatorias, lo que incrementa el tamaño del índice. Si el índice alcanza un tamaño que requiere que cada inserción aleatoria acceda a una entrada de índice diferente, las inserciones resultan en una alta tasa de desalojo y reemplazo de la caché de WiredTiger. Cuando esto ocurre, el índice deja de estar completamente en caché y se actualiza en el disco, lo que reduce el rendimiento.

Para mejorar el rendimiento de las inserciones masivas de datos aleatorios en campos de índice, puedes:

  • Descartar el índice y luego volver a crearlo después de insertar los datos aleatorios.

  • Inserta los datos en una colección vacía sin índice.

Crear el índice después de la inserción masiva ordena los datos en memoria y realiza una inserción ordenada en todos los índices.

Solamente usa una creación continua de índices si tu implementación cumple con uno de los siguientes casos:

  • Si tu utilización promedio de la CPU excede (N-1)/N-10% donde N es el número de hilos de CPU disponibles para mongod

  • Si la tasa de llenado de caché de WiredTiger excede regularmente el 90%

Advertencia

Evita realizar procesos de creación de índices en modo continuo y replicado al mismo tiempo, ya que podría generar problemas inesperados, como compilaciones fallidas y bucles de fallos.

Nota

Si tu implementación no cumple con estos criterios, usa la creación de índices por defecto.

Tip

Con Atlas, puede escalar temporalmente su clúster para cumplir con los requisitos de una compilación de índice tradicional. Sin embargo, Atlas cobra por escalar su clúster. Consulte Costos de configuración del clúster para obtener más información.

Volver

Fundamentals