What's New in MariaDB Community Server 10.5?

MariaDB Community Server 10.5 introduces the following new features:

Embracing the MariaDB Name

MariaDB Community Server 10.5 uses the "MariaDB" name in more places:

  • It uses MariaDB in many error messages that previously referred to MySQL.

  • It uses DBD::MariaDB for bundled Perl scripts that previously used DBD::mysql.

  • It uses new MariaDB-based names as the primary names for many executables. The old names are still supported for backward compatibility using symbolic links. The new MariaDB-based names were first introduced in MariaDB Community Server 10.4. However, in that version, the old names were still the primary names for the executables, and the new names were supported using symbolic links. See below for the new MariaDB-based names:

    Old Executable Name

    New Executable Name

    mysql

    mariadb

    mysqld

    mariadbd

    mariabackup

    mariadb-backup

    mysql_plugin

    mariadb-plugin

    mysql_upgrade

    mariadb-upgrade

    mysql_waitpid

    mariadb-waitpid

    mysqladmin

    mariadb-admin

    mysqlbinlog

    mariadb-binlog

    mysqlcheck

    mariadb-check

    mysqldump

    mariadb-dump

    mysqlimport

    mariadb-import

    mysqlshow

    mariadb-show

    mysqlslap

    mariadb-slap

    mysql_client_test

    mariadb-client-test

    mysql_client_test_embedded

    mariadb-client-test-embedded

    mysql_config

    mariadb-config

    mysql_convert_table_format

    mariadb-convert-table-format

    mysql_embedded

    mariadb-embedded

    mysql_find_rows

    mariadb-find-rows

    mysql_fix_extensions

    mariadb-fix-extensions

    mysql_install_db

    mariadb-install-db

    mysql_ldb

    mariadb-ldb.

    mysql_secure_installation

    mariadb-secure-installation

    mysql_setpermission

    mariadb-setpermission

    mysql_tzinfo_to_sql

    mariadb-tzinfo-to-sql

    mysql_upgrade_service

    mariadb-upgrade-service

    mysql_upgrade_wizard

    mariadb-upgrade-wizard

    mysqld_multi

    mariadbd-multi

    mysqld_safe

    mariadbd-safe

    mysqld_safe_helper

    mariadbd-safe-helper

    mysqldumpslow

    mariadb-dumpslow

    mysqlhotcopy

    mariadb-hotcopy

    mysqltest

    mariadb-test

    mysqltest_embedded

    mariadb-test-embedded

Packaging

MariaDB Community Server 10.5 includes some packaging improvements:

  • It includes a new mariadb-conv command-line tool to encode/decode MariaDB-encoded file system names.

  • Binary tarball packages have the following changes:

    • Embedded server (libmysqld) has been removed.

    • Debug symbols have been stripped from non-server binaries.

    • The server binary (mariadbd) retains its debug symbols, so that stack traces contain readable function names.

    • Binary tarball size has been reduced from over 1 GB to around 300 MB.

  • It removes the TokuDB storage engine from packages for Debian and Ubuntu.

  • It removes the Cassandra storage engine from packages.

InnoDB Storage Engine

MariaDB Community Server 10.5 includes many significant improvements to the InnoDB storage engine:

  • It implements a new thread pool for InnoDB background tasks, which allows for InnoDB to use system resources more efficiently.

  • It reduces semaphore contention in several areas to help the system perform better under high concurrency:

    • It reduces semaphore contention when accessing the buffer pool.

    • It removes the ability to configure multiple buffer pool instances, since it does not reduce contention.

    • It reduces semaphore contention when executing DROP TABLE statements.

    • It uses table metadata locks instead of internal InnoDB semaphores for certain background operations.

    • It adds instrumentation that informs the server's thread pool about semaphore waits, so that the thread pool can let other client connections perform work while a client connection is waiting on a semaphore.

  • It improves performance in several areas:

    • It uses a new InnoDB redo log format that is more efficient.

    • It removes the ability to configure multiple InnoDB redo log files, since it does not help performance.

    • It optimizes access to certain InnoDB page header fields.

    • It optimizes how the change buffer is merged.

    • It optimizes checksums on the IA-32 architecture by using CRC-32C acceleration.

    • It optimizes how InnoDB scrubs deleted data.

  • It improves stability in several areas:

    • It improves how InnoDB scrubs deleted data by ensuring that scrubbing operations are properly written to the InnoDB redo log.

    • It receives foreign key metadata from the server, rather than relying on an internal SQL parser.

    • It allows prepared XA transactions to be properly recovered after a client disconnects.

ColumnStore Storage Engine

MariaDB Community Server 10.5 is the first MariaDB Community Server release to include the ColumnStore storage engine as a plugin:

Spider Storage Engine

MariaDB Enterprise Server 10.5 contains some enhancements for the Spider storage engine:

Aria Storage Engine

MariaDB Community Server 10.5 contains several enhancements for the Aria storage engine:

  • It handles the BACKUP STAGE BLOCK_COMMIT statement by blocking commits to Aria tables, which allows for safer backups with MariaDB Backup.

  • It increases the index length limit for Aria tables from 1000 bytes to 2000 bytes.

S3 Storage Engine

MariaDB Community Server 10.5 introduces the S3 storage engine:

  • The S3 storage engine allows tables to be archived in S3-compatible storage.

  • Tables can be archived in S3 by executing ALTER TABLE ... ENGINE=S3.

  • After the table has been archived, it becomes read-only.

  • The S3 storage engine supports partitioning.

  • The S3 storage engine supports replication.

TokuDB Storage Engine

MariaDB Community Server 10.5 removes the TokuDB storage engine from packages for Debian and Ubuntu.

Cassandra Storage Engine

MariaDB Community Server 10.5 removes the Cassandra storage engine from packages.

MariaDB Replication

MariaDB Community Server 10.5 improves MariaDB Replication:

  • It allows extended table metadata to be written to the binary log by configuring the binlog_row_metadata system variable.

  • It changes the default parallel replication mode from conservative to optimistic.

  • It renames the REPLICATION CLIENT privilege to BINLOG MONITOR, but it still supports the old name.

  • It allows replication-related operations that previously required the SUPER privilege to the BINLOG MONITOR (formerly REPLICATION CLIENT) and PROCESS privileges:

    Privilege

    Newly Granted Operations

    BINLOG MONITOR (formerly REPLICATION CLIENT)

    PROCESS

MariaDB Galera Cluster

MariaDB Community Server 10.5 improves support for MariaDB Galera Cluster:

  • It allows Galera Cluster to be configured to prohibit DDL replication to only the storage engines that support Galera Cluster by configuring the wsrep_strict_ddl system variable.

  • It adds full GTID support to Galera Cluster.

  • It adds an inconsistency voting protocol to mitigate the harm of inconsistencies by choosing very carefully which inconsistent nodes need to abort.

Temporal Data

MariaDB Community Server 10.5 improves support for Temporal Data Tables:

  • It allows system-versioned tables that are partitioned on an interval of SYSTEM_TIME to be configured with a specific start date and time, which can make partition management more user-friendly.

  • It allows application-time period tables to be configured to prohibit overlapping time periods.

SQL Functionality

MariaDB Community Server 10.5 improves SQL functionality in several areas:

  • It changes the behavior of the DROP TABLE statement to forcefully drop the table, even if the storage engine can't find the table.

  • It changes the behavior of the ANALYZE TABLE statement, so that it no longer flushes the table definition cache, so that it performs better under concurrency.

  • It changes the behavior of the ANALYZE statement to show the time spent checking the WHERE clause.

  • It adds support for INSERT ... RETURNING statements.

  • It adds support for REPLACE ... RETURNING statements.

  • It adds support for the EXCEPT ALL clause in SELECT statements.

  • It adds support for the INTERSECT ALL clause in SELECT statements.

  • It adds support for the CYCLE clause in common table expressions (CTEs).

  • It adds support for COMMENT option for CREATE DATABASE and ALTER DATABASE statements.

  • It adds support for ALTER TABLE IF EXISTS ....

  • It adds support for ALTER TABLE ... RENAME INDEX.

  • It adds support for ALTER TABLE ... RENAME COLUMN.

  • It adds support for defining foreign keys using REFERENCE clauses in column definitions.

  • It adds support for the VISIBLE option in index definitions, which can be needed to import dumps from MySQL.

  • It adds support for the WITHOUT OVERLAP option in index definitions that are defined for application-time period tables.

  • It adds support for the STARTS option for system-versioned tables that are partitioned on an interval of SYSTEM_TIME.

  • It adds support for the JSON_ARRAYAGG() function.

  • It adds support for the JSON_OBJECTAGG() function.

  • It adds support for the RELEASE_ALL_LOCKS() function.

  • It adds support for the OVERLAPS() function.

  • It adds support for a new Data Type API, so that plugins can define custom data types.

  • It adds support for the INET6 data type, which can be used to represent IPv4 and IPv6 addresses.

  • It changes the way that TIMESTAMP, DATETIME, and TIME columns that use the pre-MariaDB 10.0 format are displayed in the output of SHOW CREATE TABLE and DESCRIBE and in the value of the information_schema.COLUMNS.COLUMN_TYPE column. Columns using the older format will have a comment that says /* mariadb-5.3 */.

Security

MariaDB Community Server 10.5 includes several security improvements:

  • It allows a server to be configured to require secure connections by configuring the require_secure_transport system variable.

    • If this mode is enabled, then all TCP connections must use TLS.

    • Local connections that connect using a Unix socket or a named pipe are also allowed.

  • It adds the CONNECTION_TYPE column to the performance_schema.threads table, which can be used to determine which connections are using TLS.

  • It renames the REPLICATION CLIENT privilege to BINLOG MONITOR, but it still supports the old name.

  • It allows replication-related operations that previously required the SUPER privilege to the BINLOG MONITOR (formerly REPLICATION CLIENT) and PROCESS privileges:

    Privilege

    Newly Granted Operations

    BINLOG MONITOR (formerly REPLICATION CLIENT)

    PROCESS

Information Schema

MariaDB Community Server 10.5 includes several Information Schema improvements:

Thread Pool

MariaDB Community Server 10.5 includes several thread pool improvements:

Protocol

MariaDB Community Server 10.5 includes several protocol improvements:

  • It adds protocol support for the new Data Type API.

  • It adds protocol support for the JSON data type.

  • It adds protocol support for the GEOMETRY data type.

XA Transactions

MariaDB Community Server 10.5 includes some XA transaction improvements:

  • It allows prepared XA transactions to be properly recovered after a client disconnects.

Internals

MariaDB Community Server 10.5 includes some internal improvements:

  • Its internal regular expression library has been upgraded from PCRE to PCRE2.

  • It adds support for a new Data Type API, so that plugins can define custom data types.

For a complete list of changes, see MariaDB Community Server 10.5.4 release notes.