MariaDB 12.1.2 (which is effectively the first stable 12.1 release to reach GA status, since 12.1.1 was an RC) is now available as the first update to the major 12.0 series for this popular open-source database, introducing a series of performance improvements and broader compatibility features. Here they are.
The Aria storage engine now supports a segmented key cache through a new system variable, allowing up to 128 segments for improved parallelization. Metadata locking delivers measurable scalability improvements, and Galera-based environments gain support for asynchronous replication between two clusters with parallel apply workers, controlled via a new retry counter.
The audit plugin also benefits from buffered logging, reducing I/O overhead thanks to a configurable memory buffer. Vector distance calculations receive optimizations as well, offering faster processing for workloads dependent on extrapolation-based operations. Additionally, MDL (Metadata Locking) receives targeted scalability improvements, reducing contention in workloads with many concurrent DDL and DML operations.
It’s also worth noting that MariaDB 12.1 expands its compatibility layer with MySQL and Oracle. With that said, a new authentication plugin now supports caching_sha2_password, addressing a longstanding compatibility gap in MySQL environments. Plus, Oracle mode gains support for the ( + ) outer join syntax, and the release introduces associative arrays using the DECLARE TYPE … TABLE OF … INDEX BY format.
On top of that, DROP USER behavior is now safer, issuing warnings about active sessions by default or producing an error when running in Oracle mode. Additionally, the optimizer includes several new hints, covering index usage, grouping, ordering, merge behavior, and materialization options.
Apart from that, in the new version, Galera nodes can now retry applying write sets using the same retry counter introduced for parallel replication. The mariadb-dump utility adds wildcard support through the -L and --wildcards options.
Foreign key names no longer need to be unique across an entire database; they only need to be unique within the table that defines them, making schema design more flexible. The optimizer trace now includes definitions of tables and views, controlled through a dedicated system variable, providing more complete insight into query planning.
And last but not least, functional indexes can now be used in GROUP BY and ORDER BY operations. For more information, see the announcement. A detailed overview of all changes is in the release notes.
