Inicio » MongoDB » Cómo funciona la reserva de espacio en disco en MongoDB

Cómo funciona la reserva de espacio en disco en MongoDB

Los ficheros de datos de la MongoDB siempre serán muchos más grandes que los datos insertados en ello. Quizás te sorprenda la de espacio que utilizan, están son las causas:

  • Ficheros de datos reservando espacio.

En el directorio de datos MongoDD reserva ficheros de datos de un tamaño determinado para prevenir la fragmentación del disco. El nombre del primer archiva de datos es <nombre BD>.0, el siguiente <nombre BD>.1 , etc. El tamaño del primer fichero es 64 MB, el siguiente 128 MB y así hasta llegar a 2 GB a partir de aquí los ficheros siguientes serán todos de 2 GB. En el directorio de los ficheros de datos en los sistemas unix-linux, siempre nos vamos a encontrar ficheros de datos que están vacios. Mongod siempre tiene un fichero vacio para evitar el retraso que puede provocar a la base de datos la creación de un fichero. Esto significa que cuando llegues a los ficheros de 2GB, se puede dar el caso de que tengas un fichero de 2 GB casi sin utilizar y otro completamente vacío, dando la impresión que los datos están ocupando mucho espacio, pero realmente los ficheros están vacios, es simplemente espacio reservado.

La opción de reserva de espacio se puede desactivar con la opción  noprealloc . Sin embargo esto no debe utilizarse nunca en entornos de producción.

En sistemas Linux puedes utlizar hdparm para hacerte una idea de cuánto le va a costar la reserve de espacio.

time hdparm –fallocate $((1024*1024)) testfile

Al tamaño que ocupan los datos hay que añadirle el tamaño que ocupa el oplog (qué es el oplog está explicado en una entrada anterior) en las configuraciones de réplica. Este se calcula que es un 5% del espacio en disco.

El directorio de datos contiene los ficheros journal, que almacenan las operaciones de escritura antes de que MongoDB las aplique a la base de datos.

  • Registros vacios.

MongoDB mantiene una lista de los registros vacios a medida que se van borrando los documentos y las colecciones. MongoDB reutiliza este espacio, pero nunca lo devuelva al sistema operativo

Para reutilizar el espacio, se puede utilizar una de las siguientes opciones:

    • compact, desfragmenta espacio. compact requiere 2 GB de espacio extra para poder ejecutarse. No utilizar si tenemos problemas de espacio. Importante  compact solo termina con la fragmentación pero no regresa espacio desfragmentado al sistema operativo
    • repairDatabase, reconstruye la base de datos. Requiere espacio adicional para ejecutarse. Necesita espacio para almacenar la base de datos antigua y la nueva mientras que se ejecuta y le lleva bastante tiempo completarse y mientras que se está ejecutando bloquea la base de datos.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s