Who Am I? ● Daniel Bartholomew – Sr. Technical Writer / Sys Admin for the MariaDB project – [email protected] – dbart on Freenode (#maria) – Twitter: @daniel_bart – Google+: http://gplus.to/dbart – Facebook: Not if I can help it.
What is MariaDB? ● Started as branch of MySQL ● The project is ~50 months old ● Major Releases: 5.1, 5.2, 5.3, 5.5, Galera Cluster, MariaDB 10.0 (still alpha) ● Community Developed, Feature Enhanced, Backward Compatible ● Want more information? – Attend Max Mether's talk – MariaDB: MySQL With More Features – tomorrow at 09:00 in this room
Why MariaDB 10.0? ● MariaDB & MySQL version numbers in 5.1 & 5.5 are locked, which causes problems. ● For Example: – MariaDB & MySQL 5.1.44 buffer overflow flaw – Very serious bug so we fixed it immediately (in hours in the source, package release within a couple days) – MySQL also at 5.1.44, we couldn't use 5.1.45, so we numbered it as MariaDB 5.1.44b – MySQL fixed it in 5.1.45
Why MariaDB 10.0? ● 5.2 & 5.3 are easier to manage because we don't have to wait for MySQL or use non- standard version numbers ● Huge changes in MariaDB 5.3 ● The 5.3 to 5.5 merge took almost a year ● In MariaDB 5.5 there are over 1.5 million lines of extra code, ~61MB diff ● MariaDB is not a patch set against MySQL ● Feature-for-feature, there are many differences
Why MariaDB 10.0? ● MariaDB 5.5 has many features not in MySQL 5.5 but which are in MySQL 5.6 ● MySQL 5.6 refactored with huge losses in commit history ● Not all new 5.6 code is up to MariaDB standards ● Missing test cases ● Non-public bug reports
MariaDB 10.0 in a Nutshell ● Built on MariaDB 5.5 – You really should see Max's talk tomorrow. ● Includes: – Backported features (from MySQL 5.6) – Reimplemented features (from MySQL 5.6) – New features
Reimplemented Features ● Error messages (w/ system error string) ● CURRENT_TIMESTAMP as DEFAULT for DATETIME columns ● Global Transaction ID – kb.askmonty.org/en/global-transaction-id ● Parallel replication – mariadb.atlassian.net/browse/MDEV-4506
New Features ● Multi-source Replication – Work from Taobao – Many users partition data across many masters… now you can replicate many masters to a single slave – Great for analytical queries, complete backups, etc… – kb.askmonty.org/en/multi-source-replication
New Features ● EXISTS-TO-IN optimization – kb.askmonty.org/en/exists-to-in-optimization ● SHOW EXPLAIN for gets the query plan for a running statement – kb.askmonty.org/en/show-explain
New Features ● Faster ALTER TABLE with unique keys for Aria and MyISAM ● Per-thread memory usage (from Taobao) – INFORMATION_SCHEMA.PROCESSLIST now has MEMORY_USAGE & EXAMINE_ROWS – SHOW STATUS has memory usage information now – mariadb.atlassian.net/browse/MDEV-4011
New Features ● Engine Independent persistent statistics – MySQL 5.6 has persistent statistics, but only for InnoDB – MariaDB version is storage engine independent – Statistics are not limited by the storage engine API, and are used by the query optimizer to choose the best execution plan for each statement – Statistics are collected for non-indexed columns (unlike MySQL 5.6 InnoDB version) – mariadb.atlassian.net/browse/MDEV-4145
New Features ● Support for atomic writes on FusionIO DirectFS – kb.askmonty.org/en/fusion-io-introduction – kb.askmonty.org/en/fusionio-directfs-atomic- write-support ● Better table discovery, so FederatedX has assisted discovery, Sequence engine (creates ascending / descending sequences, useful in joins)
New Features ● MariaDB as a “data platform” ● Cassandra storage engine – Apache Cassandra cluster seen as a storage engine to MariaDB – Read and Write to Cassandra using SQL (SELECT, INSERT, UPDATE, DELETE) – kb.askmonty.org/en/cassandra
New Features ● CONNECT storage engine – Can read csv, dbf, ini, XML, ODBC, and more – Combine (join) data between multiple data sources (for example, Cassandra & MariaDB & Oracle) – kb.askmonty.org/en/connect ● LevelDB storage engine – kb.askmonty.org/en/leveldb
MariaDB 10.0 Roadmap ● MariaDB is already a superset of features in MySQL ● MySQL 5.6 merge will be completed in two steps – 10.0.x – 10.1.x ● Plan is to have all important features of MySQL 5.6 with the first 10.1.x stable release – For all practical purposes MariaDB 10.1.x will be a drop-in replacement to MySQL 5.6
FAQ – Replication ● Can I replicate from MySQL 5.6 to MariaDB 10.x? – Yes ● Can I replicate from MariaDB 10.x to MariaDB 5.5? – Yes ● Can I replicate from MariaDB 10.x to MySQL 5.5/5.6? – No
FAQ – Tools ● SELECT VERSION() returns 10.0.2-MariaDB ● Version string in handshake packet will be 5.5.30-mysql-10.0.2-MariaDB ● Tools should start recognizing MariaDB for additional feature-set (mytop, HeidiSQL, etc…)
Group commit in 10.0 ● Even faster ● Slow fsync (removing checkpoint per commit saving 1-in-3 fsyncs) ● Fast fsync (reduced stall on LOCK_log gives speedup)
10.0 Group Commit vs MySQL 5.6 ● MySQL 5.6 removes checkpoint per commit ● More complex thread scheduling, less grouping of commits ● Does not remove stall on LOCK_log, less grouping of commits