Docs Menu
Docs Home
/ /

FAQ: Indexes

Este documento aborda algunas preguntas frecuentes sobre los índices de MongoDB. Para más información sobre los índices, consulte indexes.

Para crear un índice en una colección, utilice el 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

Las compilaciones de índices pueden 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.

Las compilaciones de índices de MongoDB en una colección completa requieren un bloqueo exclusivo de lectura y escritura en la colección. Las operaciones que requieren un bloqueo de lectura o escritura en la colección deben esperar hasta que libere el mongod bloqueo.

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

Las compilaciones de índices en conjuntos de réplicas presentan consideraciones de rendimiento y riesgos específicos. Consulte Compilaciones de índices en entornos replicados para obtener más información.

Para obtener información sobre las operaciones de creación de índices que se están ejecutando actualmente, consulte Operaciones de indexación activas.

Para finalizar la compilación de un índice en curso, utilice db.collection.dropIndex() o sus ayudantes de shell, dropIndex() o.dropIndexes db.killOp() No utilice para finalizar compilaciones de índice en curso en conjuntos de réplicas o clústeres fragmentados.

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 compilaciones de índices en progreso.

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

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

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 que proporciona información sobre el tamaño de cada índice de la indexSizes colección.

Las operaciones de escritura pueden requerir actualizaciones de 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 su aplicación escribe mucho, 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 su utilización promedio de CPU excede (N-1)/N-10%, donde N es la cantidad de subprocesos 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 su implementación no cumple con estos criterios, utilice la compilación de índice predeterminada.

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