MariaDB 5.3 is no longer maintained. Please use a more recent release.
30 Jan 2013
Stable (GA)
The focus for is to radically improve performance for subqueries, as well as for joins and single-table queries over large data sets.
is based on and thus on and MySQL 5.1. It is no longer being supported.
Some of the code was backported from MySQL 6.0 (a MySQL version that was never released as GA by Oracle), some was re-engineered and enriched by new features, and some code was written from scratch.
Any new feature or combination of features can be switched on/off dynamically via the system variable.
The first stable (GA) release of was , which was released on 29 Feb 2012.
You can download , or get the latest .
We have created an showing the new optimizer features in and 5.3 compared to MySQL 5.5 and 5.6.
Subqueries are finally usable in practice. It is no longer necessary to
rewrite subqueries manually into joins or into separate queries.
aims to provide reasonably efficient handling for all kinds of subqueries.
All problems with EXPLAIN taking a long time have also been resolved.
These transform subqueries into 'semi-joins', entities similar to inner joins, and then use join optimizer to pick the best semi-join execution strategy. Overall the process is similar to how joins are processed in MySQL,MariaDB and other database systems.
The shows new subqueries optimizations graphically.
No early materialization of derived tables (e.g. subqueries in a FROM
clause) and materialized views (EXPLAIN is always instantaneous)
Thanks to , mergeable derived tables are now processed like mergeable VIEWs.
optimization gives the optimizer an option to create indexes over materialized derived tables
Key-ordered retrieval
Block Nested Loop algorithm can be used for outer joins
Block Hash Join (classic algorithm) is implemented and can be used for any equi-joins
Block Index Join (Batch Key Access Join) is supported and can exploit the benefits of ordered retrievals for primary and secondary keys provided by the new implementation of
Correct optimization of index_merge vs range access:
strategy
can be used to turn on/off all new optimizations.
plugin included.
Faster commands; now also work with prepared statements.
support.
— implements group commit which works when using XtraDB with the binary log enabled. (In previous MariaDB releases, and all MySQL releases at the time of writing, group commit works in InnoDB/XtraDB when the binary log is disabled, but stops working when the binary log is enabled).
— When using row-based replication, the binary log does not contain SQL statements, only discrete single-row insert/update/delete events. This can make it harder to read mysqlbinlog output and understand where in an application a given event may have originated, complicating analysis and debugging.This feature adds an option to include the original SQL statement as a comment in the binary log (and shown in mysqlbinlog output) for row-based replication events.
. This is a backport of the same feature in MySQL 5.6. It was implemented in .
support for and , , and columns.
now supports AS DECIMAL[(M,D)] and AS INT.
and all other datetime/time functions now supports microsecond fully.
Backported from MySQL 5.5.
Asynchronous IO in XtraDB is and is now faster, due to the use of IO completion ports.
Additional durability option for XtraDB : innodb_flush_method can now
be O_DSYNC, like on Unixes. The effect of using this option is that the
log file is opened with FILE_FLAG_WRITETHROUGH,
and FlushFileBuffers() is not done. This may improve speed in write-heavy
scenarios.
New status variables: Rows_tmp_read, Handler_tmp_write,
and Handler_tmp_update which count what happens with internal temporary
tables. Rows_read, Handler_write and Handler_update no longer
count operations on internal temporary tables.
*/` new that can be
used when you want use new MariaDB syntax but still want your program to be compatible with MySQL.
A MariaDB optimized version of is included in the MariaDB distribution.
Enhanced :
max_user_connections (both the global variable and
the GRANT option) can be set to -1 to stop users from connecting to
the server. The global max_user_connections variable does
not affect users with the SUPER privilege.
The directive does not ignore all errors (like fatal errors), only things that are safe to ignore.
You can access the tree from .
For a complete list of security vulnerabilities (CVEs) fixed across all versions of MariaDB, see the page.
: : : : : : : []: []: : , : []: : : :
If a subquery is not a semi-join, MariaDB 5.3 will make a cost-based choice between these two strategies:
Materialization for non-correlated subqueries, with efficient NULL-aware execution
IN-to-EXISTS transformation (the only optimization inherited from MariaDB 5.2 and MySQL 5.1/5.5)
The subquery cache makes sure that subqueries are re-executed as few times as possible, improving performance of already optimized subqueries.
Subqueries are never executed during EXPLAIN, thus resulting in almost
instant EXPLAIN.
DISTINCT and GROUP BY without HAVING are from subqueries.
All block based algorithms for joins can use the benefits of new incremental join buffers
All block based algorithms fully support outer joins including nested outer joins
All block based algorithms can use the benefits of the first match optimization for semi-joins and the non-exist optimization for outer joins
All block based algorithms for joins can exploit the benefits of index condition push-down.
The total memory space used by the query for join buffers can be limited now, and block based algorithms can allocate join buffers up to their needs (not exceeding the set limits).
Condition over outer tables extracted from ON expressions of outer joins are evaluated before inner tables are accessed (supported for both regular index join and block index join)
Early checks for nulls for the fields from any null-rejecting conditions are performed
—
In MariaDB 5.3, START TRANSACTION WITH CONSISTENT SNAPSHOT now also works
with the binary log. This means it is possible to obtain the binlog position
corresponding to a transactional snapshot of the database without blocking
any other queries. This is used by the command
"mysqldump --single-transaction --master-data" to do a fully
non-blocking backup which can be used to provision a new slave.
"START TRANSACTION WITH CONSISTENT SNAPSHOT" now also
works consistently between transactions involving more than one storage
engine (currently XTraDB and PBXT support this).
—
This feature can improve the performance of row-based replication on tables
that do not have a primary key (or other unique key), but which do have
another index that can help locate rows to update or delete. With this
feature, index cardinality information from ANALYZE TABLE is considered
when selecting the index to use (before this feature is implemented, the
first index was selected unconditionally).
mysqlbinlog will now omit redundant use statements
around BEGIN, SAVEPOINT, COMMIT, and ROLLBACK events when
reading MySQL 5.0 binlogs.
A new Windows .
Includes a GUI-tool, HeidiSQL.
New status variable Handler_read_rnd_deleted, which is number of deleted rows found and skipped while scanning a table. Before this was part of Handler_read_rnd_next.
New variable 'in_transaction' that is 1 if you are in a transaction, 0 otherwise.
Progress reports for ALTER TABLE
and LOAD DATA INFILE. In addition Aria tables gives progress reports
for REPAIR TABLE and CHECK TABLE. The progress can be seen
in SHOW PROCESSLIST, INFORMATION_SCHEMA.PROCESSLIST and is sent to
MariaDB clients that calls mysql_real_connect() with the
new CLIENT_PROGRESS flag. mysql command line client supports the new
progress indications.
—
This feature implements the new commit ordering storage engine API in PBXT.
With this feature, it is possible to use
"START TRANSACTION WITH CONSISTENT SNAPSHOT" and get consistency among
transactions which involve both XtraDB and InnoDB. (Without this feature,
there is no such consistency guarantee. For example, even after running
"START TRANSACTION WITH CONSISTENT SNAPSHOT" it was still possible for
the InnoDB/XtraDB part of some transaction T to be visible and the PBXT
part of the same transaction T to not be visible.)
MariaDB unique error numbers now start from 1900 to not clash with MySQL
error numbers.
`/*M!
29 Nov 2012
Stable (GA)
13 Nov 2012
Stable (GA)
02 Oct 2012
Stable (GA)
28 Aug 2012
Stable (GA)
4 May 2012
Stable (GA)
9 Apr 2012
Stable (GA)
29 Feb 2012
Stable (GA)
15 Feb 2012
Release Candidate
21 Dec 2011
Release Candidate
14 Oct 2011
Beta
10 Sep 2011
Beta
26 July 2011
Beta
KILL [HARD | SOFT] [CONNECTION | QUERY] [thread_id | USER user_name]This page is licensed: CC BY-SA / Gnu FDL