sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Por qué y cuándo es necesario reconstruir índices en MongoDB?

Según la documentación de MongoDB, generalmente no hay necesidad de reconstruir índices de forma rutinaria.

NOTA :Cualquier consejo sobre almacenamiento se vuelve más interesante con MongoDB 3.0+, que introdujo un API de motor de almacenamiento conectable . Mis comentarios a continuación se refieren específicamente al motor de almacenamiento MMAP predeterminado en MongoDB 3.0 y versiones anteriores. WiredTiger y otros motores de almacenamiento tienen diferentes implementaciones de almacenamiento para datos e índices.

Puede haber algún beneficio en la reconstrucción de un índice con el motor de almacenamiento MMAP si:

  • Un índice está consumiendo una cantidad de espacio mayor a la esperada en comparación con los datos. Nota:debe monitorear los datos históricos y el tamaño del índice para tener una línea de base para la comparación.

  • Desea migrar de un formato de índice anterior a uno más nuevo. Si se recomienda una reindexación, se mencionará en las notas de actualización. Por ejemplo, MongoDB 2.0 introdujo importantes mejoras en el rendimiento del índice por lo que las notas de la versión incluyen una reindexación sugerida al formato v2.0 después de la actualización. De manera similar, MongoDB 2.6 introdujo 2dsphere (v2.0) índices que tienen un comportamiento predeterminado diferente (disperso por defecto). Los índices existentes no se reconstruyen después de las actualizaciones de la versión del índice; la elección de si/cuándo actualizar se deja al administrador de la base de datos.

  • Has cambiado el _id formato para una colección hacia o desde una clave que aumenta monótonamente (por ejemplo, ObjectID) a un valor aleatorio. Esto es un poco esotérico, pero hay una optimización de índice que divide los cubos de árbol b 90/10 (en lugar de 50/50) si está insertando _id s que siempre aumentan (ref:SERVER-983 ). Si la naturaleza de su _id s cambia significativamente, puede ser posible construir un árbol b más eficiente con un nuevo índice.

Para obtener más información sobre el comportamiento general del árbol B, consulte:Wikipedia:B-tree

Visualización del uso del índice

Si tiene mucha curiosidad por profundizar un poco más en las partes internas del índice, hay algunos comandos/herramientas experimentales que puede probar. Espero que estos estén limitados solo a MongoDB 2.4 y 2.6: