¿Cuál es la estructura de almacenamiento de una base de datos?

Capacidad de Almacenamiento en Azure MySQL Flexible

Valoración: 4.2 (1547 votos)

La capacidad de almacenamiento en un sistema de gestión de bases de datos como MySQL es un factor crítico para la planificación y operación de cualquier aplicación. No es solo una cuestión de cuánto espacio físico hay disponible, sino también de cómo se gestiona ese espacio, cómo afecta al rendimiento y cómo puede crecer con las necesidades de tus datos. Cuando hablamos de MySQL, especialmente en entornos de nube gestionados como Azure Database for MySQL - Servidor flexible, la respuesta a la capacidad de almacenamiento es multifacética y depende en gran medida de la configuración y el nivel de servicio elegido.

¿Cuántos datos aguanta MySQL?
En miPanel, cada base de datos MySQL que cree puede almacenar hasta 1024 MB (1 GB) de datos.

En el contexto de Azure, el servicio de Servidor flexible para MySQL ofrece una infraestructura robusta y escalable que abstrae muchas de las complejidades del hardware subyacente, incluyendo la gestión del almacenamiento. Este servicio está diseñado para proporcionar flexibilidad y control granular sobre los servidores de base de datos, permitiendo adaptar la capacidad a las cargas de trabajo específicas.

Índice de Contenido

Niveles de Servicio y Capacidades de Almacenamiento

Azure Database for MySQL - Servidor flexible organiza sus recursos en tres niveles de servicio principales, cada uno diseñado para diferentes tipos de cargas de trabajo y con distintas capacidades de almacenamiento:

  • Ampliable (Burstable): Ideal para cargas de trabajo que no requieren un uso constante y elevado de CPU, como entornos de desarrollo, prueba o aplicaciones con picos de uso esporádicos.
  • Uso general (General Purpose): Orientado a la mayoría de las cargas de trabajo empresariales que necesitan un equilibrio entre computación y memoria, junto con un rendimiento de E/S escalable. Aplicaciones web, móviles y otras aplicaciones empresariales suelen encajar aquí.
  • Crítico para la empresa (Business Critical): Diseñado para cargas de trabajo de base de datos de alto rendimiento que demandan baja latencia y alta concurrencia, como procesamiento de transacciones en tiempo real o análisis de alto rendimiento.

La capacidad de almacenamiento que puedes aprovisionar varía significativamente entre estos niveles. Aunque todos comparten la misma tecnología de almacenamiento subyacente, los límites superiores difieren para satisfacer las demandas de las cargas de trabajo más exigentes.

Tabla Comparativa de Almacenamiento por Nivel

A continuación, se presenta una tabla que resume el rango de almacenamiento disponible para cada nivel de servicio en Azure Database for MySQL - Servidor flexible:

Nivel de ServicioCapacidad Mínima de AlmacenamientoCapacidad Máxima de Almacenamiento
Ampliable20 GiB16 TiB
Uso general20 GiB16 TiB
Crítico para la empresa20 GiB32 TiB

Como se observa, los niveles Ampliable y Uso general ofrecen hasta 16 terabytes (TiB) de almacenamiento, mientras que el nivel Crítico para la empresa duplica esa capacidad máxima, llegando a 32 TiB. En todos los casos, el almacenamiento se aprovisiona en incrementos de 1 gigabyte (GiB).

Escalabilidad del Almacenamiento: Siempre Hacia Arriba

Una de las ventajas clave de un servicio gestionado en la nube como Azure Database for MySQL es la flexibilidad para ajustar los recursos según sea necesario. El almacenamiento aprovisionado para tu servidor flexible se puede escalar verticalmente en cualquier momento después de la creación del servidor. Esta operación de escalado de almacenamiento es una operación en línea, lo que significa que no requiere reiniciar el servidor y, por lo tanto, no interrumpe las conexiones de cliente ni las cargas de trabajo activas. Puedes aumentar el tamaño del almacenamiento a través de Azure Portal o la CLI de Azure.

Es fundamental entender una limitación importante: el almacenamiento solo se puede escalar verticalmente. Una vez que has aumentado la capacidad de almacenamiento de tu servidor, no es posible reducirla a un tamaño menor. Por lo tanto, es importante planificar cuidadosamente tus necesidades de almacenamiento, aunque la opción de aumentar la capacidad siempre está disponible.

Modo de Solo Lectura y Prevención

Para proteger tus datos de escrituras perdidas y asegurar la estabilidad del servicio, Azure Database for MySQL - Servidor flexible implementa un mecanismo de protección cuando el espacio de almacenamiento disponible se agota. Si el almacenamiento consumido se acerca al límite aprovisionado, el servidor entra en modo de solo lectura. Esto significa que las nuevas solicitudes de transacción de escritura serán bloqueadas, aunque las transacciones activas existentes continuarán ejecutándose hasta completarse. Las consultas de lectura seguirán funcionando sin interrupciones.

Los umbrales para activar el modo de solo lectura dependen del tamaño total de almacenamiento aprovisionado:

  • Si el almacenamiento aprovisionado es menor o igual a 100 GiB, el servidor se marca como de solo lectura si el almacenamiento disponible cae por debajo del 5% del tamaño aprovisionado.
  • Si el almacenamiento aprovisionado es mayor a 100 GiB, el servidor se marca como de solo lectura si el almacenamiento libre es inferior a 5 GiB.

Para sacar un servidor del modo de solo lectura, la única acción requerida es aumentar el almacenamiento aprovisionado. Una vez que se completa el escalado, el servidor volverá a aceptar transacciones de escritura.

Crecimiento Automático del Almacenamiento

Para evitar proactivamente que tu servidor entre en modo de solo lectura debido a la falta de espacio, Azure ofrece la característica de crecimiento automático del almacenamiento. Esta función, habilitada por defecto para todos los nuevos servidores, permite que el almacenamiento se expanda automáticamente a medida que tus datos crecen, sin afectar la carga de trabajo.

El mecanismo de crecimiento automático funciona de la siguiente manera:

  • Para servidores con menos de 100 GiB de almacenamiento aprovisionado: El tamaño del almacenamiento se incrementa en 5 GiB cuando el almacenamiento disponible cae por debajo del 10% del almacenamiento aprovisionado.
  • Para servidores con más de 100 GiB de almacenamiento aprovisionado: El tamaño del almacenamiento se incrementa en un 5% del tamaño aprovisionado cuando el espacio disponible cae por debajo de 10 GiB del tamaño aprovisionado.

Es importante recordar que, al igual que el escalado manual, el almacenamiento aumentado por el crecimiento automático no se puede reducir verticalmente. Además, el crecimiento automático es obligatorio y no se puede deshabilitar para servidores configurados con alta disponibilidad o con registros acelerados habilitados.

Consideraciones Adicionales sobre Recursos

Aunque el almacenamiento es un recurso fundamental, su rendimiento está intrínsecamente ligado a otros recursos como la computación y la memoria. En Azure Database for MySQL - Servidor flexible, el rendimiento de E/S (IOPS) está relacionado con el tamaño de proceso seleccionado. Puedes tener IOPS aprovisionadas previamente para un rendimiento garantizado o habilitar IOPS de escalado automático para que el rendimiento de E/S se ajuste dinámicamente a la demanda de la carga de trabajo, hasta un máximo definido por el tamaño de proceso.

¿Cuáles son los límites de PostgreSQL?
Se recopilan métricas de PostgreSQL para un máximo de 500 bases de datos. Si hay más de 500, solo se incluyen las 500 principales para una métrica determinada. Estas bases de datos tienen el mayor número de transacciones.

La memoria también juega un papel crucial, especialmente para el motor de almacenamiento InnoDB, que es el predeterminado en MySQL. La memoria física disponible y el tamaño total de memoria (que incluye una parte del almacenamiento temporal SSD) impactan directamente en el tamaño del grupo de búferes de InnoDB, donde se almacenan en caché los datos e índices accedidos con frecuencia. Una gestión eficiente de la memoria es vital para un rendimiento óptimo de las consultas.

Almacenamiento en MySQL General: Más Allá de Azure

Si bien Azure gestiona la infraestructura subyacente, MySQL en sí mismo tiene sus propias consideraciones sobre cómo se almacenan los datos a nivel interno. La capacidad y los requisitos de almacenamiento raw dependen de varios factores, incluyendo el motor de almacenamiento utilizado (aunque InnoDB es el más común y recomendado), los tipos de datos de las columnas y si se utiliza compresión.

Un límite fundamental en MySQL es el tamaño máximo de una fila. Independientemente del motor de almacenamiento, la representación interna de una fila tiene un tamaño máximo de 65.535 bytes. Este límite excluye los datos almacenados en columnas BLOB o TEXT, que se manejan de manera diferente y solo contribuyen con un pequeño puntero (9 a 12 bytes) al tamaño de la fila principal. Los datos reales de BLOB/TEXT se almacenan en otras áreas.

Los requisitos de almacenamiento en disco varían según el tipo de dato utilizado para cada columna. Por ejemplo:

  • TINYINT requiere 1 byte.
  • SMALLINT requiere 2 bytes.
  • MEDIUMINT requiere 3 bytes.
  • INT o INTEGER requiere 4 bytes.
  • BIGINT requiere 8 bytes.

Los tipos de punto flotante (FLOAT, DOUBLE) requieren 4 u 8 bytes dependiendo de la precisión. Los tipos DECIMAL o NUMERIC utilizan un formato binario que empaqueta 9 dígitos decimales en 4 bytes, con requisitos adicionales para los dígitos restantes. Los tipos de fecha y hora (DATE, TIME, DATETIME, TIMESTAMP) también tienen requisitos de almacenamiento específicos que incluso cambiaron en versiones de MySQL (como en 5.6.4 para soportar fracciones de segundo), añadiendo bytes adicionales según la precisión.

Motores de almacenamiento alternativos como NDB Cluster tienen sus propias reglas de almacenamiento, como la alineación de 4 bytes que puede hacer que tipos pequeños ocupen 4 bytes, o requisitos específicos para columnas NULL y claves primarias (incluso si no se definen explícitamente, NDB crea una "oculta").

Gestión de Recursos y Costo

Gestionar la capacidad de almacenamiento en Azure Database for MySQL - Servidor flexible implica no solo monitorear el uso actual, sino también planificar el crecimiento futuro. Puedes supervisar el consumo de almacenamiento y otros recursos a través de métricas en Azure Portal.

El escalado de recursos, tanto de computación como de almacenamiento, es una operación que se puede realizar en cualquier momento. Sin embargo, mientras que el escalado de almacenamiento es en línea, cambiar el nivel o tamaño de proceso (vCores y memoria) requiere un reinicio del servidor, lo que causa una breve ventana de inactividad (típicamente entre 60 y 120 segundos). La retención de copias de seguridad también es un recurso que se puede ajustar (entre 1 y 35 días) sin necesidad de reiniciar.

El costo del servicio está directamente relacionado con el nivel de servicio, el tamaño de proceso (vCores y memoria) y la cantidad de almacenamiento aprovisionado, así como el rendimiento de E/S. Azure Portal muestra una estimación del costo mensual basada en la configuración seleccionada. Para optimizar costos, se recomienda monitorear la utilización de recursos y ajustar el nivel de servicio o el tamaño de proceso si están infrautilizados, o detener el servidor cuando no esté en uso. El crecimiento automático ayuda a evitar el modo de solo lectura, pero también implica un aumento de costos al aumentar el almacenamiento.

Preguntas Frecuentes (FAQ)

¿Cuál es la capacidad máxima de almacenamiento en Azure Database for MySQL Flexible Server?
La capacidad máxima varía según el nivel de servicio. Es de 16 TiB para los niveles Ampliable y Uso general, y de 32 TiB para el nivel Crítico para la empresa.
¿Puedo reducir el tamaño de almacenamiento una vez que lo aumento?
No, el almacenamiento en Azure Database for MySQL Flexible Server solo se puede escalar verticalmente (aumentar), no reducir.
¿Qué sucede si mi servidor se queda sin almacenamiento?
Si el almacenamiento consumido alcanza un umbral cercano al límite aprovisionado (5% libre para <=100 GiB, 5 GiB libre para >100 GiB), el servidor entra en modo de solo lectura para evitar la pérdida de datos.
¿El crecimiento automático de almacenamiento está siempre activado?
Está habilitado por defecto para nuevos servidores. Es obligatorio para servidores con alta disponibilidad o registros acelerados habilitados. Puede ser deshabilitado en otros casos, pero se recomienda mantenerlo activado para evitar problemas de espacio.
¿El tamaño de almacenamiento afecta el rendimiento?
Sí, indirectamente. La cantidad de almacenamiento aprovisionado puede influir en las IOPS disponibles (especialmente con IOPS aprovisionadas previamente o el límite máximo de IOPS con escalado automático). Además, quedarse sin espacio y entrar en modo de solo lectura impacta drásticamente el rendimiento al impedir escrituras.

Conclusión

La capacidad de almacenamiento en MySQL es un concepto que varía significativamente dependiendo del entorno de despliegue. En el caso de Azure Database for MySQL - Servidor flexible, se ofrece una solución altamente escalable con capacidades que van desde 20 GiB hasta 32 TiB, distribuidas en diferentes niveles de servicio para adaptarse a diversas necesidades y presupuestos. La facilidad para escalar el almacenamiento en línea, la protección que ofrece el modo de solo lectura y la conveniencia del crecimiento automático son características clave que simplifican la gestión de la capacidad. Si bien los límites internos de MySQL, como el tamaño máximo de fila o los requisitos por tipo de dato, siguen siendo relevantes a nivel de diseño de base de datos, la infraestructura de Azure proporciona la capa necesaria para manejar grandes volúmenes de datos de manera eficiente y confiable.

Si quieres conocer otros artículos parecidos a Capacidad de Almacenamiento en Azure MySQL Flexible puedes visitar la categoría Bases de datos.

Ivan

Soy un entusiasta de la tecnología con especialización en bases de datos, particularmente en MySQL. A través de mis tutoriales detallados, busco desmitificar los conceptos complejos y proporcionar soluciones prácticas a los desafíos cotidianos relacionados con la gestión de datos

Aprende mas sobre MySQL

Subir