En cdmon estamos actualizando la versión de MariaDB en nuestros servidores, pasando a la versión 10.11. Esta actualización mejora el rendimiento y la seguridad de las bases de datos, pero también introduce algunos cambios que pueden afectar a ciertas aplicaciones o consultas.

 

La actualización se realizará de forma progresiva en todos los servidores de cdmon. En algún momento de la madrugada, podría producirse un corte de unos 15 minutos. En la mayoría de los casos, no es necesario que haga nada. Sin embargo, si su aplicación o página web utiliza bases de datos, le recomendamos revisar su funcionamiento tras la actualización para asegurarse de que todo sigue funcionando correctamente.

 

A continuación, le mostramos un resumen de los principales cambios y actualizaciones que introduce esta nueva versión de MariaDB 10.11. Estos cambios pueden afectar a su aplicación dependiendo de cómo utilice la base de datos.

 

1. Cambios en el almacenamiento y formato de datos

InnoDB

El motor de almacenamiento InnoDB ha experimentado modificaciones que pueden influir en el comportamiento de las tablas y datos almacenados:

  • El formato de los archivos InnoDB ahora es siempre Barracuda (antes podía ser "Antelope").

  • Se elimina la variable innodb_large_prefix, por lo que las claves en tablas InnoDB siempre usan la máxima longitud posible.

  • La opción innodb_file_format ha sido eliminada.

Nota: Si anteriormente utilizabas el formato "Antelope" y tus tablas incluían filas largas o índices con prefijos grandes, es posible que experimentes diferencias en el almacenamiento o rendimiento. Aunque la mayoría de las aplicaciones no se verán afectadas, es recomendable verificar tablas que puedan haber dependido de las limitaciones del formato anterior. Adicionalmente, si tu aplicación intenta insertar datos que violan restricciones de InnoDB, como claves duplicadas o datos que exceden el tamaño permitido, anteriormente podría haber generado una advertencia.

 

Timestamps y Fechas (DATETIME)

Los tipos de datos relacionados con fechas y horas han sido actualizados para mejorar la precisión:

  • Ahora las fechas incluyen milisegundos por defecto.

  • Si su aplicación espera fechas sin milisegundos, puede necesitar adaptarla.

Nota: Si tu aplicación realiza comparaciones de fechas y horas sin tener en cuenta los milisegundos, podrías encontrar discrepancias. Por ejemplo, una consulta que antes comparaba 2025-03-06 11:48:21 ahora podría devolver resultados diferentes si las marcas de tiempo almacenadas incluyen milisegundos, como 2025-03-06 11:48:21.123

 

JSON

Las funciones relacionadas con JSON han sido mejoradas para ofrecer mayor flexibilidad y corregir errores:

  • La función JSON_TABLE() ahora permite nombres de columna con caracteres especiales entre comillas.

  • Se han corregido errores en JSON_VALID() y JSON_QUERY(), lo que puede afectar validaciones JSON en su aplicación.

Nota: Si tu aplicación utiliza JSON_TABLE() para extraer datos JSON y anteriormente evitabas nombres de columna con caracteres especiales debido a restricciones, ahora puedes utilizarlos directamente. Este cambio facilita la manipulación de datos JSON con estructuras más complejas.

 

2. Cambios en la ejecución de consultas SQL

ORDER BY y LIMIT

Se han implementado optimizaciones en la ejecución de consultas que utilizan ORDER BY junto con LIMIT:

  • Optimización mejorada: MariaDB ha mejorado la optimización de ORDER BY ... LIMIT, lo que puede cambiar el orden de los resultados si no se utiliza una cláusula ORDER BY explícita. Si sus consultas dependen de un orden específico, asegúrese de que siempre incluyen un ORDER BY definido

Ejemplo: Si no se especifica un ORDER BY, el conjunto de resultados podría variar entre ejecuciones debido a las optimizaciones internas. Para garantizar un orden consistente, es esencial especificar la cláusula ORDER BY, ejemplo de comando: SELECT * FROM empleados ORDER BY fecha_contratacion DESC LIMIT 10;

 

Funciones SQL

Algunas funciones SQL han sido actualizadas para ampliar su compatibilidad y corregir errores:

  • Las funciones GREATEST() y LEAST() ahora funcionan correctamente con fechas y horas (DATETIME y TIMESTAMP).

  • Se han corregido errores en funciones como REPLACE(), LOCATE(), y otras funciones de cadenas de texto.

Ejemplo: Si tienes dos columnas de fechas y deseas obtener la más reciente por fila, puedes utilizar: SELECT GREATEST(fecha_inicio, fecha_fin) AS fecha_mas_reciente FROM proyectos;

Anteriormente, esto podría haber producido resultados inesperados o errores, pero con la actualización, la función maneja correctamente estos tipos de datos.

 

GROUP BY

La evaluación de condiciones en consultas que utilizan GROUP BY ha cambiado:

  • Las condiciones en HAVING ahora se evalúan antes de agrupar.

  • Esto puede modificar los resultados de consultas que usen GROUP BY.

Nota: Es importante asegurarse de que la condición en HAVING sea lógica y esté alineada con los datos reales, ya que la evaluación previa al agrupamiento podría filtrar registros antes de contar, alterando el resultado esperado.

 

Le recomendamos revisar sus aplicaciones y realizar pruebas tras la actualización para asegurar su correcto funcionamiento. Si tiene dudas o necesita ayuda, nuestro equipo de soporte está disponible para ayudarle.

 

Para obtener información más detallada sobre la actualización desde versiones anteriores, puede consultar los siguientes enlaces oficiales de MariaDB:

 

Para más información, puedes contactar con nosotros.