The new version of MariaDB, the community-developed fork of MySQL, has been released, with support for parallel slave replication threads, a feature sponsored by Google.
According to the MariaDB Blog, The replication improvements start with the introduction of a Global Transaction Id(GTID), which aims to make it easy to set up replication with GTID then provision new slaves. It also supports other replication features such as Multi-Source Replication, and makes the slaves crash safe.
Multi-Source Replication means you can replicate data from many masters to one slave, overcoming the difficulty of getting a complete copy of sharded data onto a single server.
The parallel slave replication has been sponsored by Google, and overcomes the problem encountered when the master has many writes so the slaves can’t keep up with changes.
As we reported in September Google is moving away from MySQL to MariaDB. Writing about the new MariaDB version on the Google Open Source Blog, Ian Gulliver, Site Reliability Manager said:
“Internally at Google, we’ve already deployed MariaDB 10.0 to our non-production MySQL instances to help report bugs and work with the MariaDB team to test their fixes. This release takes the MariaDB 10.0 branch from alpha to beta status, where the team will shift focus from stabilization to bug fixes.”
The parallel slave replication means the slaves adapt to the speed of the master and apply binlog events in parallel. Transactions will be applied in parallel if they were executed in parallel on the master.
More storage engines have been added, including a Cassandra Storage Engine that lets you combine data from Cassandra with your data in MariaDB; a Connect Storage Engine so you can use Connect to handle data in files or behind ODBC as if that data was part of the data stored in MariaDB; a Sequence Storage Engine for creating numerical sequences that are stored in memory; a Spider Storage Engine with built-in sharding capabilities; and TokuDB, a storage engine designed for high performance write-intensive workloads.
Improvements to the optimizer start with the provision of engine independent persistent statistics. Until now, statistics were supplied by the storage engines and the quality wasn’t very good. Because statistics are used by the query optimizer to choose the best execution plan for each SQL statement, it was important to provide better statistics that are engine independent.
Histograms have also been added for query optimization. Histograms can be collected for both indexed and non indexed columns. Histogram data allows the query optimizer to make better query plan choices for complex multi-table queries.
A third optimizer improvement is the ability to optimize EXISTS subqueries. The optimizer will convert EXISTS subqueries to IN, when possible, so that semi-join optimizations can be used.
There are a raft of improvements for the administrator, including support for roles, so you can set up roles with specific permissions and assign users to the roles. A number of EXPLAIN options have been added; you can use SHOW EXPLAIN to get the query plan of a running statement; you can write EXPLAIN output into the slow query log, and use EXPLAIN for INSERT/UPDATE/DELETE.
This version supports the use of SQL to shut down the server, and you can use the ID of a query to kill it rather than having to use the thread ID.
Selected pieces of MySQL 5.6 have been merged into MariaDB 10.0, including most InnoDB enhancements, performance schema, and online ALTER.
The MariaDB 10.0.5 Release Notes give more details of all the changes.
Google Open Source Blog Welcoming MariaDB 10.0.5
Download Maria 10.0.5 Beta