
ROWFORMAT EN MYSQL
El Row Format (formato de fila) en mysql, define cómo se almacenan físicamente las filas de una tabla en el motor de almacenamiento, como InnoDB o MyISAM. El Row Format afecta el rendimiento, el uso del espacio en disco y las capacidades de la tabla, como la compresión de datos o el manejo de columnas de longitud variable. Cada motor de almacenamiento tiene sus propios formatos de fila compatibles, y el formato puede configurarse al crear o modificar una tabla.
Row Format en MySQL (InnoDB)
InnoDB, el motor de almacenamiento predeterminado en mysql, soporta varios formatos de fila.
Los más comunes son:
- Redundant: Es el formato más antiguo y menos eficiente. Almacena una copia completa de los datos de la fila, incluyendo información redundante. Utiliza más espacio en disco que otros formatos. Es compatible con versiones antiguas de MySQL, pero no se recomienda para aplicaciones modernas debido a su ineficiencia. Uso: Muy raro en versiones recientes, salvo para mantener compatibilidad con sistemas legacy.
- Compact: Introducido para mejorar el uso del espacio en comparación con Redundant. Almacena datos de longitud variable de manera más eficiente y elimina redundancias. Reduce el tamaño de las filas al no almacenar valores NULL innecesarios. Es el formato predeterminado en versiones antiguas de MySQL (antes de MySQL 5.7). Uso: Todavía común en tablas creadas en versiones anteriores, pero menos eficiente que los formatos modernos.
- Dynamic: Es el formato predeterminado en MySQL 5.7 y superiores (para InnoDB). Optimizado para manejar columnas de longitud variable (como VARCHAR, TEXT, o BLOB) de manera eficiente. Almacena datos fuera de la página principal si son demasiado grandes, lo que permite un mejor uso del espacio. Soporta compresión de datos (si se configura). Uso: Recomendado para la mayoría de las aplicaciones modernas debido a su flexibilidad y eficiencia.
- Compressed: Similar al formato Dynamic, pero habilita la compresión de datos. Reduce aún más el uso de espacio en disco, a costa de un mayor uso de CPU para comprimir/descomprimir datos. Ideal para tablas con grandes cantidades de datos que no cambian frecuentemente. Uso: Útil en escenarios donde el ahorro de espacio en disco es crítico.
Cómo especificar o verificar el Row Format
- Especificar al crear una tabla: Se puede definir el formato de fila al crear una tabla con la cláusula ROW_FORMAT. Por ejemplo:
CREATE TABLE usuario ( id INT PRIMARY KEY, nombre VARCHAR(100), email VARCHAR(100), telefono VARCHAR(10) ) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
- Verificar el formato de una tabla existente: Usa el comando SHOW TABLE STATUS o consulta la información del esquema:
SHOW TABLE STATUS WHERE Name = 'usuario ';
La columna Row_format indicará el formato actual (por ejemplo, Dynamic, Compact, etc.).
- Cambiar el formato de una tabla: Se modificar el formato de fila usando ALTER TABLE
ALTER TABLE mi_tabla ROW_FORMAT=COMPRESSED;
Consideraciones
- Compatibilidad: No todos los formatos son compatibles con todas las versiones de MySQL o con todas las configuraciones (por ejemplo, el formato Compressed requiere que la tabla use un tamaño de página adecuado).
- Rendimiento vs. Espacio: Formatos como Compressed ahorran espacio pero pueden ralentizar operaciones de lectura/escritura debido a la compresión.
- Motor de almacenamiento: Los formatos de fila son específicos del motor. Por ejemplo, MyISAM no usa los mismos formatos que InnoDB y tiene sus propias opciones (FIXED o DYNAMIC).
- Casos de uso:
- Usa Dynamic para la mayoría de las aplicaciones modernas.
- Usa Compressed si necesitas ahorrar espacio en disco.
- Evita Redundant a menos que sea necesario por compatibilidad con sistemas antiguos.