Após um ano de desenvolvimento e três lançamentos preliminares, foi publicado o primeiro lançamento estável da nova versão do SGBD MariaDB 10.6, que se desenvolve como um desdobramento do MySQL, mantendo compatibilidade reversa e distinguindo-se pela integração de mecanismos de armazenamento adicionais e recursos expandido. O suporte para essa nova versão será mantido por 5 anos, até julho de 2026.
O desenvolvimento do MariaDB é supervisionado pela organização independente MariaDB Foundation seguindo um processo de desenvolvimento totalmente aberto e transparente, independente de fornecedores específicos. O MariaDB é fornecido em vez do MySQL em muitas distribuições Linux (RHEL, SUSE, Fedora, openSUSE, Slackware, OpenMandriva, ROSA, Arch Linux, Debian) e está implementado em grandes projetos como Wikipedia, Google Cloud SQL e Nimbuzz.
Principais melhorias do MariaDB 10.6:
- Foi garantida a atomicidade na execução das instruções “CREATE TABLE|VIEW|SEQUENCE|TRIGGER”, “ALTER TABLE|SEQUENCE”, “RENAME TABLE|TABLES”, “DROP TABLE|VIEW|VIEW|TRIGGER|DATABASE” (ou a instrução é totalmente concluída, ou tudo retorna ao estado inicial). No caso de operações “DROP TABLE” que removem várias tabelas ao mesmo tempo, a atomicidade é garantida no nível de cada tabela individual. O objetivo da mudança é assegurar a integridade em caso de falha servidor durante a execução da operação. Anteriormente, após uma falha, poderiam permanecer tabelas e arquivos temporários, a sincronização das tabelas nos mecanismos de armazenamento e nos arquivos frm poderia ser afetada, e tabelas individuais poderiam não ser renomeadas ao renomear várias tabelas de uma vez. A integridade é garantida por meio da manutenção de um log de recuperação de estado, cujo caminho pode ser definido pela nova opção “—log-ddl-recovery=arquivo” (por padrão ddl-recovery.log).
- Foi implementada uma construção definida no padrão SQL 2008 “SELECT … OFFSET … FETCH”, permitindo a seleção de um número específico de linhas, começando a partir de um deslocamento indicado, com a possibilidade de usar o parâmetro “WITH TIES” para anexar mais um valor seguinte. Por exemplo, a instrução “SELECT i FROM t1 ORDER BY i ASC OFFSET 1 ROWS FETCH FIRST 3 ROWS WITH TIES” difere da construção “SELECT i FROM t1 ORDER BY i ASC LIMIT 3 OFFSET 1” pela saída de mais um elemento, que segue no final (em vez de 3, serão exibidas 4 linhas).
- Para o mecanismo InnoDB, foi implementada a sintaxe “SELECT … SKIP LOCKED”, permitindo a exclusão de linhas para as quais não pode ser aplicada uma trava (“LOCK IN SHARE MODE” ou “FOR UPDATE”).
- Implementada a possibilidade de ignorar índices (no MySQL 8, essa funcionalidade é chamada de "índices invisíveis"). A marcação de um índice para ignorar é feita por meio da flag IGNORED na instrução "ALTER TABLE", após a qual o índice permanece visível e atualizável, mas não é utilizado pelo otimizador.
- Adicionada a função JSON_TABLE(), destinada a converter dados JSON em forma relacional. Por exemplo, um documento JSON pode ser convertido para uso no contexto de uma tabela, que pode ser especificada dentro do bloco FROM na instrução SELECT.
- Melhorada a compatibilidade com o SGBD Oracle: Adicionada a suporte a subconsultas anônimas dentro do bloco FROM. Implementada a construção MINUS (equivalente ao EXCEPT). Adicionadas as funções ADD_MONTHS(), TO_CHAR(), SYS_GUID() e ROWNUM().
- No mecanismo InnoDB, a inserção em tabelas vazias foi acelerada. O formato das linhas COMPRESSED por padrão foi alterado para modo somente leitura. O esquema SYS_TABLESPACES substituiu SYS_DATAFILES e reflete diretamente o estado no sistema de arquivos. Para o espaço de tabela temporário, foi garantido suporte para gravação em atraso. O suporte ao antigo algoritmo de somas de verificação, mantido por compatibilidade com o MariaDB 5.5, foi descontinuado.
- No sistema de replicação, o tamanho do valor do parâmetro master_host foi aumentado de 60 para 255 caracteres, e master_user para 128. Adicionada a variável binlog_expire_logs_seconds para configurar o tempo de expiração do log binário em segundos (anteriormente, o tempo de descarte era determinado apenas em dias pela variável expire_logs_days).
- No mecanismo de replicação multi-master síncrona Galera, implementada a variável wsrep_mode para configuração dos parâmetros da API WSREP (Write Set REPlication). Permitida a transição do Galera de comunicações não criptografadas para o uso de TLS sem interromper o cluster.
- Implementado o esquema sys-schema, que reúne uma coleção de visões, funções e procedimentos para análise de operações com o banco de dados.
- Adicionadas tabelas auxiliares para análise do desempenho da replicação.
- No conjunto de tabelas informativas, adicionadas as visões INFORMATION_SCHEMA.KEYWORDS e INFORMATION_SCHEMA.SQL_FUNCTIONS, que exibem uma lista de palavras-chave e funções disponíveis.
- Removidos os armazenamentos TokuDB e CassandraSE.
- A codificação utf8 foi alterada de uma representação de quatro bytes utf8mb4 (U+0000..U+10FFFF) para três bytes utf8mb3 (abrange o intervalo Unicode U+0000..U+FFFF).
- Adicionada suporte à ativação por socket no systemd.
- No plugin GSSAPI, adicionada suporte a nomes de grupos do Active Directory e SID.
- Foi adicionada a verificação da presença do arquivo de configuração $MARIADB_HOME/my.cnf além de $MYSQL_HOME/my.cnf.
- Novas variáveis de sistema implementadas: binlog_expire_logs_seconds, innodb_deadlock_report, innodb_read_only_compressed, wsrep_mode e Innodb_buffer_pool_pages_lru_freed.
Fonte: opennet.ru
