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 MongoDB
/

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 Creaciones de Índices en Entornos Replicados para obtener más información. Para minimizar el impacto que la creación de un índice podría tener en los sets de réplicas, incluidos los sets de réplicas particionados, utiliza un procedimiento de creación de índices escalonada, tal como se describe en Creaciones de índices escalonadas en sets de réplicas.

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

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.

Volver

Fundamentals