After 10 years of the 10.x MariaDB Community Server release series, we are moving to the 11.0 release series!
Why a new release series?
One target of this release was to remove — or depreciate — old code. Which in turn results in the removal and depreciation of system variables, and in some use cases, incompatibility between the 10.x and 11.x release series.
The other target of the release is to introduce a new cost model for the query optimizer to address user feedback about how MariaDB Community Server is predicting the costs of a query execution for complex queries.
But first, more on our release numbering
Before we dive into the details of MariaDB Community Server 11.0, let’s review our server release numbering methodology. In MariaDB Community Server, the first two sets of numbers indicate a release series, like 10.11, 5.5 or in this case 11.0. A change to the first set of numbers, for example, 5.x, 10.x and 11.x reflects the compatibility version. The second number (x) is the series number. For MariaDB Community Server, we release a new major release series with new features every quarter. Example: this quarter the major release was MariaDB Community Server 10.11. The quarter before it was 10.10. Next quarter, 11.0 will reach GA, which will be our major release for the quarter. Learn more about how we deliver faster innovation to the community with quarterly releases.
MariaDB Community Server 11.0 features
We are introducing a number of new features in the 11.0 release, including:
MariaDB Query Optimizer
The MariaDB query optimizer calculates the costs for a query mainly based on metrics like disk access, fetching a key or a row based on a row id. Other metrics add smaller costs to this, like evaluating a where clause.
These metrics can be used to calculate total costs, which are sufficient for simpler queries. Like queries with a low number of joins, as you mainly need to find the best index to use. In some cases, it might be better to not use an index at all and resort to a table scan.
The new optimizer addresses this and is taking details regarding the costs of the storage engine details into account.
The cost for disk access is also not the same as in the past, the query optimizer therefore now assumes a SSD to be used, with the option to change the costs of a disk access.
With MariaDB Community Server 11.0, the optimizer can be tuned by the user by changing the costs for the different metrics via the configuration file, a command line parameter or even SQL. And even more, the different costs can be defined per engine.
The InnoDB Change Buffering feature has been removed in MariaDB Community Server 11.0. It was disabled by default with MariaDB Community Server 10.5.15, 10.6.7, 10.7.3 and 10.8.2 and deprecated for later release series. Buffering of changes could result in better performance in the past with slow disks, but the now available disks make buffering changes more an overhead than to gain any performance. Furthermore, special handling was needed for the recovery process, which is now obsolete. Related system variables have been removed. We’ve done some initial benchmarking on the performance improvements and it looks great. We are working on a separate blog that will cover the benchmarking in more detail.
The system variable innodb_flush_method is now deprecated and was replaced by the new system variables innodb_log_file_buffering, innodb_data_file_buffering, innodb_log_file_write_through and innodb_data_file_write_through. These boolean variables, which allow better control for log files and data files, can be set dynamically while the Server is running.
With MariaDB Community Server 11.0, all the fine grained privileges have been removed from the SUPER alias. The SUPER privilege is still used for some special cases, like using DES_ENCRYPT and DES_DECRYPT without an explicit key, for debug settings and some system variables for changing them with SET GLOBAL.
The SUPER privilege became an alias of other privileges for compatibility reasons when the fine grained privileges were introduced with MariaDB Community Server 10.5. With MariaDB Community Server 10.11 changes were made to privileges to allow real read only replicas. This was achieved by removing the READ ONLY ADMIN privilege from the SUPER privilege.
Compatibility for Binary Names
Users of MariaDB Community Server should be aware that they are not using MySQL Server. MariaDB has decided to take a step-by-step approach for name changes, to always keep the focus on compatibility to the last release series. Over the last few years, MariaDB changed MariaDB Community Server from using mysql prefixed binaries over providing mariadb symlinks, to renaming the binaries to mariadb prefixed binaries, while providing mysql-prefixed symlinks.
With this release series, MariaDB is deprecating the mysql-prefixed names. Warnings will be shown when a MariaDB tool is used. Symlinks are still provided, but are included in a separate compat package.
MariaDB is encouraging all users to change their scripts and tools now, if not done already.
MariaDB Community Server 5.1 has been EOL since 2015, but MariaDB still maintained the code to allow replication from MariaDB Community Server 5.1. With the goal to clean up the code, MariaDB has now removed the support for MariaDB Community Server 5.1 replication events, which in turn means that a replication from MariaDB Community Server 5.1 is not possible anymore.
MariaDB Galera Cluster
For MariaDB Galera Cluster, configurations are set using one system variable as a semicolon separated list of options, the system variable wsrep_provider_options. MariaDB Community Server system variables are limited to a length of 2048 characters, which is not sufficient for the Galera options in some use cases, and also hard to maintain as a DBA.
With MariaDB Community Server 11.0, a plugin is available, enabled via the plugin-wsrep-provider option. The options are split into separate options, if the plugin is used. The use of the plugin is optional.
MariaDB Galera Cluster has added a new feature with MariaDB Community Server 10.9 to save wsrep node status changes in a dedicated machine readable JSON file. With the release series 11.0, this JSON file includes details about a node eviction status to the JSON file, to report that a Galera node needs to be restarted to join the cluster.
We encourage you to try MariaDB Community Server 11.0 RC today. Please note that we do not recommend running RC releases in production.