Después de un año de desarrollo y tres versiones preliminares, se publica la primera versión estable de la nueva rama del sistema de gestión de bases de datos MariaDB 10.6, en la que se desarrolla una bifurcación de MySQL, que mantiene la compatibilidad hacia atrás y se distingue por la integración de motores de almacenamiento adicionales y capacidades ampliadas. Se brindará soporte a la nueva rama durante 5 años, hasta julio de 2026.
El desarrollo de MariaDB es supervisado por la organización independiente MariaDB Foundation, de acuerdo con un proceso de desarrollo completamente abierto y transparente, que no depende de fabricantes individuales. MariaDB se ofrece en lugar de MySQL en muchas distribuciones de Linux (RHEL, SUSE, Fedora, openSUSE, Slackware, OpenMandriva, ROSA, Arch Linux, Debian) y se implementa en grandes proyectos como Wikipedia, Google Cloud SQL y Nimbuzz.
Mejoras clave en MariaDB 10.6:
- Se garantiza la atomicidad de la ejecución de las expresiones "CREATE TABLE|VIEW|SEQUENCE|TRIGGER", "ALTER TABLE|SEQUENCE", "RENAME TABLE|TABLES", "DROP TABLE|VIEW|VIEW|TRIGGER|DATABASE" (o bien la expresión se completa en su totalidad, o todo vuelve a su estado original). En el caso de las operaciones "DROP TABLE", que eliminan varias tablas a la vez, la atomicidad se garantiza a nivel de cada tabla individual. El objetivo de este cambio es asegurar la integridad en caso de un fallo en el proceso de ejecución de la operación. Anteriormente, después de un fallo, podían quedar tablas temporales y archivos, desincronizarse las tablas en los motores de almacenamiento y archivos frm, y algunas tablas podrían no haber sido renombradas al cambiar varias tablas a la vez. La integridad se asegura mediante el registro de recuperación de estado, cuya ruta se puede definir a través de la nueva opción "—log-ddl-recovery=archivo" (por defecto ddl-recovery.log). servidores Se ha implementado la construcción definida en el estándar SQL 2008 "SELECT … OFFSET … FETCH", que permite devolver un número específico de filas comenzando desde un desplazamiento indicado, con la opción de usar el parámetro "WITH TIES" para agregar otro valor siguiente. Por ejemplo, la expresión "SELECT i FROM t1 ORDER BY i ASC OFFSET 1 ROWS FETCH FIRST 3 ROWS WITH TIES" se diferencia de la construcción "SELECT i FROM t1 ORDER BY i ASC LIMIT 3 OFFSET 1" en que devuelve un elemento adicional que sigue al final (en lugar de 3 se devolverán 4 filas).
- Para el motor InnoDB se ha implementado la sintaxis "SELECT … SKIP LOCKED", que permite excluir filas para las cuales no se puede establecer un bloqueo ("LOCK IN SHARE MODE" o "FOR UPDATE").
- Para el motor InnoDB se ha implementado la sintaxis «SELECT … SKIP LOCKED», que permite excluir filas para las que no se puede establecer un bloqueo («LOCK IN SHARE MODE» o «FOR UPDATE»).
- Se ha implementado la posibilidad de ignorar índices (en MySQL 8 esta funcionalidad se denomina «índices invisibles»). La marca de un índice para ser ignorado se realiza mediante la bandera IGNORED en la expresión «ALTER TABLE», después de lo cual el índice permanece visible y se actualiza, pero no es utilizado por el optimizador.
- Se ha añadido la función JSON_TABLE(), destinada a transformar datos JSON en forma relacional. Por ejemplo, un documento JSON se puede transformar para su uso en el contexto de una tabla, que se puede especificar dentro del bloque FROM en la expresión SELECT.
- Se ha mejorado la compatibilidad con bases de datos Oracle: se ha añadido soporte para subconsultas anónimas dentro del bloque FROM. Se ha implementado la construcción MINUS (equivalente a EXCEPT). Se han añadido las funciones ADD_MONTHS(), TO_CHAR(), SYS_GUID() y ROWNUM().
- En el motor InnoDB, se ha acelerado la inserción en tablas vacías. El formato de filas COMPRESSED por defecto ha sido trasladado a un modo de solo lectura. El esquema SYS_TABLESPACES ha sustituido a SYS_DATAFILES y refleja directamente el estado en el sistema de archivos. Se ha proporcionado soporte para escritura diferida en el espacio de tablas temporal. Se ha dejado de soportar el antiguo algoritmo de sumas de verificación, mantenido por compatibilidad con MariaDB 5.5.
- En el sistema de replicación, el tamaño del valor del parámetro master_host se ha incrementado de 60 a 255 caracteres, y master_user a 128. Se ha añadido la variable binlog_expire_logs_seconds para configurar el tiempo de expiración del registro binario en segundos (anteriormente, el tiempo de eliminación se determinaba solo en días a través de la variable expire_logs_days).
- En el mecanismo de replicación multi-maestro sincrónica de Galera, se ha implementado la variable wsrep_mode para la configuración de los parámetros de la API WSREP (Write Set REPlication). Se permite la transición de Galera de comunicaciones no cifradas a usar TLS sin detener el clúster.
- Se ha implementado el esquema sys-schema, en el que se ha reunido una colección de vistas, funciones y procedimientos para analizar operaciones con bases de datos.
- Se han añadido tablas de servicio para analizar el rendimiento de la replicación.
- Se han añadido vistas a la colección de tablas informativas INFORMATION_SCHEMA.KEYWORDS e INFORMATION_SCHEMA.SQL_FUNCTIONS, que muestran la lista de palabras clave y funciones disponibles.
- Se han eliminado los almacenes TokuDB y CassandraSE.
- La codificación utf8 ha sido trasladada de la representación de cuatro bytes utf8mb4 (U+0000..U+10FFFF) a la utf8mb3 de tres bytes (cubre el rango Unicode U+0000..U+FFFF).
- Se ha añadido soporte para la activación por socket en systemd.
- En el plugin GSSAPI se ha añadido soporte para nombres de grupos de Active Directory y SID.
- Se agregó la verificación de la existencia del archivo de configuración $MARIADB_HOME/my.cnf junto con $MYSQL_HOME/my.cnf.
- Se implementaron nuevas variables del sistema binlog_expire_logs_seconds, innodb_deadlock_report, innodb_read_only_compressed, wsrep_mode e Innodb_buffer_pool_pages_lru_freed.
Fuente: opennet.ru
