MariaDB 5.3.5 MySQL server stable release
MariaDB 5.3.5 stable MySQL server has been announced.
Compared to previous releases in the MariaDB 5.3 series, MariaDB 5.3.5 is primarily a bug-fix release with a focus on stability, performance, and usability. It is first stable or GA release of the 5.3 series and the fifth overall release in the series.
Apart from fixing bugs found in the previous 5.3.x beta and rc releases, MariaDB 5.3.5 introduces counters for the Multi-Range Read and Index Condition Pushdown optimizations.
For a list of every change made in MariaDB 5.3.5, with links to detailed information on each push, see the MariaDB 5.3.5 Changelog. It is worth noting that MariaDB 5.3 is built on MariaDB 5.2, MariaDB 5.1, and MySQL 5.1.
About MariaDB 5.3
The MariaDB 5.3 series introduces many new features, includes MariaDB 5.2, and is based on MariaDB 5.1 & MySQL 5.1. Some highlights of new features in MariaDB 5.3 include:
- subquery optimizations that finally make subqueries usable
- many optimizer changes, including Classic Hash Join, Batched Key Access, a new implementation of Multi-Range-Read optimizations as well as Index Condition Pushdown
- NoSQL-style interfaces via the HandlerSocket plugin as well as dynamic columns
- group commit in XtraDB when the binary log is enabled
- Microsoft Windows performance improvements
These are just some of the highlights, and for a more complete list of changes, please see the What is MariaDB 5.3 page.
Looking over the change log (Revision #3424), one interesting item might relate to why MariaDB 5.3.4 RC performed poorly in the Sybench benchmark comparison with MySQL 5.5.20.
Fix for Bug#13430436 PERFORMANCE DEGRADATION IN SYSBENCH ON INNODB DUE TO ICP
- When running sysbench on InnoDB there is a performance degradation due to index condition pushdown (ICP). Several of the queries in sysbench have a WHERE condition that the optimizer uses for executing these queries as range scans. The upper and lower limit of the range scan will ensure that the WHERE condition is fulfilled. Still, the WHERE condition is part of the queries’ condition and if ICP is enabled the condition will be pushed down to InnoDB as an index condition.
- Due to the range scan’s upper and lower limits ensure that the WHERE condition is fulfilled, the pushed index condition will not filter out any records. As a result the use of ICP for these queries results in a performance overhead for sysbench. This overhead comes from using resources for determining the part of the condition that can be pushed down to InnoDB and overhead in InnoDB for executing the pushed index condition.
- With the default configuration for sysbench the range scans will use the primary key. This is a clustered index in InnoDB. Using ICP on a clustered index provides the lowest performance benefit since the entire record is part of the clustered index and in InnoDB it has the highest relative overhead for executing the pushed index condition.
- The fix for removing the overhead ICP introduces when running sysbench is to disable use of ICP when the index used by the query is a clustered index.