2012-04-11 15 views

Respuesta

14

Sobre Mongo

MongoDB utiliza la memoria asignada archivos.

Esto significa que el sistema operativo esencialmente controla lo que se busca dentro y fuera de la memoria (hacia y desde el disco).

Las Reglas

Si sus índices + conjunto de trabajo exceden la memoria, las últimas páginas usadas recientemente (secciones de la memoria) se vuelca en disco. Esto deja solo los datos utilizados más recientemente que todavía se ajustan a la memoria disponibles.

Su sistema operativo controla esto.

Aunque experimentará un rendimiento horrible si su conjunto de trabajo real y los índices no se ajustan a la memoria, en la práctica, el tamaño del conjunto de trabajo (datos activos) es mucho menor que su conjunto de datos total.

Si no infringe esta regla, debe tener un excelente rendimiento la mayor parte del tiempo aunque sus índices + datos totales puedan exceder la memoria total disponible.

Cómo funciona

Si se realiza una consulta que necesita los datos que no está en la memoria, que se localizará en la memoria (recuperado de disco) y habrá un impacto en el rendimiento.

Nota: esta es esencialmente la situación cuando la base de datos se inicia por primera vez (en frío).

No hay nada en la memoria, las fallas de página se producen cuando se requieren datos y los datos se localizan en la memoria según sea necesario. Cuando se queda sin memoria, las últimas páginas usadas recientemente (fragmentos) se vacían de la memoria a favor de datos más recientes (más recientemente accedidos).

También vale la pena mencionar que, debido a que los índices se utilizan constantemente, y por lo tanto siempre se usan recientemente, prácticamente nunca se desplazan.

+0

No estoy de acuerdo con que "todavía experimentará un rendimiento relativamente alto". En mi experiencia, si el tamaño del índice se acerca o excede el tamaño de la RAM, el rendimiento cae precipitadamente. El sitio web de MongoDB le aconseja mantener el tamaño del índice << tamaño de RAM. –

+0

Es lógico que cuando dije que el rendimiento era bueno si el set de trabajo + los índices están en la memoria, si sus índices ni siquiera caben en la memoria, entonces no tendrá mucho espacio para su conjunto de trabajo y se caerá del "yo" experimentará la categoría de "alto rendimiento", o ¿me perdí algo? –

+0

Su respuesta dice ... "Si sus índices + conjunto de trabajo excede la memoria, ..." y continúa con "Todavía experimentará un rendimiento relativamente alto a menos que esté constantemente tocando cada parte del conjunto de datos". Esa es la parte que es engañosa: no es necesario tocar mucho para obtener un rendimiento terrible una vez que indexa> RAM. –

6

Si sus índices son más grandes que la memoria RAM disponible, entonces el rendimiento cae rápidamente . El sitio MongoDB específicamente te aconseja "Asegúrate de que tus índices puedan caber en la RAM".

Si sus consultas parecen lentas, debe verificar que sus índices sean lo suficientemente pequeños como para caber en la RAM. Por ejemplo, si está ejecutando en 4 GB RAM y tiene 3 GB de índices, entonces sus índices probablemente no se ajusten a en RAM. Es posible que necesite agregar RAM y/o verificar que todos los índices que ha creado estén siendo utilizados.

Cuestiones relacionadas