What's New in MariaDB Enterprise Server 10.5??
MariaDB Enterprise Server 10.5 introduces the new features listed below.
Notable Features?
Enterprise ColumnStore Storage Engine?
The ColumnStore storage engine is a columnar storage engine that provides distributed, columnar storage for scalable analytical processing and smart transactions.
MariaDB Enterprise Server 10.5 includes an enterprise version of the ColumnStore storage engine as a plugin:
It includes MariaDB ColumnStore 1.5, which has many improvements.
The installation process has been massively simplified.
The multi-node implementation has been completely rebuilt to use a REST API for orchestration.
See What's New in MariaDB ColumnStore 1.5? for more details.
Xpand Storage Engine?
MariaDB Enterprise Server 10.5 introduces MariaDB Xpand, which offers a new distributed database that provides scalability and high availability.
MariaDB Xpand uses the Xpand storage engine plugin to integrate with MariaDB Enterprise Server.
It distributes data across multiple MariaDB Xpand back-end instances.
It supports High Availability (HA) and Fault Tolerance by design.
It supports horizontal scale-out.
Other Features?
Embracing the MariaDB Name?
MariaDB Enterprise 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 usedDBD::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 Enterprise 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
mysqld
mariabackup
mysql_plugin
mysql_upgrade
mysql_waitpid
mysqladmin
mysqlbinlog
mysqlcheck
mysqldump
mysqlimport
mysqlshow
mysqlslap
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 Enterprise 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.
It removes the Cassandra storage engine from packages.
It removes support for RHEL6 and CentOS 6.
InnoDB Storage Engine?
The InnoDB storage engine is an ACID-compliant storage engine that is very performant and reliable for general purpose transactional workloads.
MariaDB Enterprise 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 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.
It allows the number of InnoDB purge threads to be changed dynamically without a server restart. As a consequence, the innodb_purge_threads system variable can be changed dynamically.
It allows the InnoDB redo log to be resized dynamically without a server restart. As a consequence, the innodb_log_file_size system variable can be changed dynamically.
It allows the number of InnoDB I/O threads to be changed dynamically without a server restart. As a consequence, the innodb_read_io_threads and innodb_write_io_threads system variables can be changed dynamically.
Spider Storage Engine?
The Spider storage engine allows you to build complex and powerful distributed databases using federated tables.
MariaDB Enterprise Server 10.5 contains several enhancements for the Spider storage engine:
It adds support for the Federated ODBC Topology. This feature has gamma maturity.
It adds the information_schema.SPIDER_WRAPPER_PROTOCOLS table.
Aria Storage Engine?
The Aria storage engine is a crash-safe storage engine that is incredibly fast for read-only workloads.
MariaDB Enterprise 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 Enterprise Server 10.5 contains several enhancements to 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.
MariaDB Replication?
MariaDB Enterprise 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
tooptimistic
.It renames the
REPLICATION CLIENT
privilege toBINLOG MONITOR
, but it still supports the old name.It allows replication-related operations that previously required the
SUPER
privilege to theBINLOG MONITOR
(formerlyREPLICATION CLIENT
) andPROCESS
privileges:Privilege
Newly Granted Operations
BINLOG MONITOR
(formerlyREPLICATION CLIENT
)Allows the user to execute SHOW BINLOG STATUS statements.
Allows the user to execute SHOW BINARY LOGS statements.
Allows the user to execute SHOW MASTER STATUS statements.
PROCESS
Allows the user to execute SHOW BINLOG EVENTS statements.
It adds new replication-related privileges to allow operations that previously required the
SUPER
privilege:Privilege
Granted Operations
BINLOG ADMIN
Allows the user to execute PURGE BINARY LOGS statements.
- Allows the user to set system variables:
BINLOG REPLAY
Allows the user to execute BINLOG statements, which are output by mariadb-binlog.
Allows the user to execute SET TIMESTAMP statements when secure_timestamp is set to
replication
.- Allows the user to set the session values of several system variables that are usually included in BINLOG statements:
REPLICATION MASTER ADMIN
Allows the user to execute SHOW REPLICA HOSTS statements.
Allows the user to execute SHOW SLAVE HOSTS statements.
- Allows the user to set system variables:
REPLICATION SLAVE ADMIN
Allows the user to execute BINLOG statements, which are output by mariadb-binlog.
Allows the user to execute CHANGE MASTER TO statements.
Allows the user to execute SHOW ALL REPLICAS STATUS statements.
Allows the user to execute SHOW ALL SLAVES STATUS statements.
Allows the user to execute SHOW RELAYLOG EVENTS statements.
Allows the user to execute SHOW REPLICA STATUS statements.
Allows the user to execute SHOW SLAVE STATUS statements.
Allows the user to execute START ALL REPLICAS statements.
Allows the user to execute START ALL SLAVES statements.
Allows the user to execute START REPLICA statements.
Allows the user to execute START SLAVE statements.
Allows the user to execute STOP ALL REPLICAS statements.
Allows the user to execute STOP ALL SLAVES statements.
Allows the user to execute STOP REPLICA statements.
Allows the user to execute STOP SLAVE statements.
- Allows the user to set system variables:
It adds aliases for statements that contain the word
SLAVE
that also allow the wordREPLICA
:It adds the shutdown_wait_for_slaves system variable to control whether a replication-aware shutdown is the default shutdown behavior.
MariaDB Enterprise Cluster?
MariaDB Enterprise Server 10.5 improves support for 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.
It adds support for non-blocking operations when wsrep_OSU_method is set to
NBO
, including:ALTER TABLE operations executed in
SHARED
orEXCLUSIVE
locking mode.CREATE INDEX operations executed in
SHARED
orEXCLUSIVE
locking mode.DROP INDEX operations.
OPTIMIZE TABLE operations.
It adds a "black box" for Galera troubleshooting. The black box holds debug log messages in memory, which can be analyzed in case of a crash.
The default value for
gcache.size
in wsrep_provider_options has been changed to 1 GB.
Temporal Data?
MariaDB Enterprise 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 Enterprise 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 ofSYSTEM_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 Enterprise 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 toBINLOG MONITOR
, but it still supports the old name.It allows replication-related operations that previously required the
SUPER
privilege to theBINLOG MONITOR
(formerlyREPLICATION CLIENT
) andPROCESS
privileges:Privilege
Newly Granted Operations
BINLOG MONITOR
(formerlyREPLICATION CLIENT
)Allows the user to execute SHOW BINLOG STATUS statements.
Allows the user to execute SHOW BINARY LOGS statements.
Allows the user to execute SHOW MASTER STATUS statements.
PROCESS
Allows the user to execute SHOW BINLOG EVENTS statements.
It adds new privileges to allow operations that could previously required the
SUPER
privilege.Privilege
Granted Operations
BINLOG ADMIN
Allows the user to execute PURGE BINARY LOGS statements.
- Allows the user to set system variables:
BINLOG REPLAY
Allows the user to execute BINLOG statements, which are output by mariadb-binlog.
Allows the user to execute SET TIMESTAMP statements when secure_timestamp is set to
replication
.- Allows the user to set the session values of several system variables that are usually included in BINLOG statements:
CONNECTION ADMIN
Skips the execution of init_connect when the user connects.
Ignores max_connections when the user connects.
Ignores max_user_connections when the user connects.
Ignores max_password_errors when the user connects.
Allows the user to kill connections owned by other users with the KILL statement.
- Allows the user to set systen variables:
thread_pool_mode
FEDERATED ADMIN
Allows the user to execute CREATE SERVER statements.
Allows the user to execute ALTER SERVER statements.
Allows the user to execute DROP SERVER statements.
READ ONLY ADMIN
Allows the user to write data even if the read_only system variable is enabled.
Allows the user to execute DROP TRIGGER statements even if the read_only system variable is enabled.
Allows the user to execute START TRANSACTION READ WRITE statements even if the read_only system variable is enabled.
- Allows the user to set system variables:
REPLICATION MASTER ADMIN
Allows the user to execute SHOW REPLICA HOSTS statements.
Allows the user to execute SHOW SLAVE HOSTS statements.
- Allows the user to set system variables:
REPLICATION SLAVE ADMIN
Allows the user to execute BINLOG statements, which are output by mariadb-binlog.
Allows the user to execute CHANGE MASTER TO statements.
Allows the user to execute SHOW ALL REPLICAS STATUS statements.
Allows the user to execute SHOW ALL SLAVES STATUS statements.
Allows the user to execute SHOW RELAYLOG EVENTS statements.
Allows the user to execute SHOW REPLICA STATUS statements.
Allows the user to execute SHOW SLAVE STATUS statements.
Allows the user to execute START ALL REPLICAS statements.
Allows the user to execute START ALL SLAVES statements.
Allows the user to execute START REPLICA statements.
Allows the user to execute START SLAVE statements.
Allows the user to execute STOP ALL REPLICAS statements.
Allows the user to execute STOP ALL SLAVES statements.
Allows the user to execute STOP REPLICA statements.
Allows the user to execute STOP SLAVE statements.
- Allows the user to set system variables:
SET USER
Allows the user to set the definer of views, triggers, stored procedures, stored functions, and events.
Allows the user to view the definer of an object, even if the user account no longer exists.
HashiCorp Vault Encryption Plugin?
MariaDB Enterprise Server 10.5 introduces an encryption plugin to support for HashiCorp Vault:
It allows HashiCorp Vault to manage encryption keys for data-at-rest encryption.
It communicates with the remote KMS using TLS.
It supports key rotation.
Performance Schema?
MariaDB Enterprise Server 10.5 includes several Performance Schema improvements:
It adds support for some of the instrumentation and tables included in MySQL 5.7.
It adds the
CONNECTION_TYPE
column to the threads table, which can be used to determine which connections are using TLS.It adds new instrumentation for the following:
Memory
Metadata locks
Prepared statements
Stored procedures
Transactions
SX-Locks
Status variables
User variables
It adds the following new tables:
Information Schema?
MariaDB Enterprise Server 10.5 includes several Information Schema improvements:
It adds the
GLOBAL_VALUE_PATH
column to the information_schema.SYSTEM_VARIABLES table, which can be used to determine which configuration file a variable’s global value was read from.It adds new tables to monitor the internals of the thread pool on Linux:
It removes the information_schema.INNODB_TABLESPACES_SCRUBBING table.
It changes some other InnoDB-related Information Schema tables in minor ways.
Thread Pool?
MariaDB Enterprise Server 10.5 includes several thread pool improvements:
It improves how it calculates the number of currently active threads, which can help prevent deadlocks.
It improves performance under very bursty workloads by basing the thread creation rate and the throttling interval on the values of the thread_pool_stall_limit and thread_pool_oversubscribe system variables.
It adds new Information Schema tables to monitor the internals of the thread pool on Linux:
Protocol?
MariaDB Enterprise Server 10.5 includes several protocol improvements:
XA Transactions?
MariaDB Enterprise Server 10.5 includes some XA transaction improvements:
It allows prepared XA transactions to be properly recovered after a client disconnects.
Internals?
MariaDB Enterprise 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 Enterprise Server 10.5.4-2 release notes.