6. SkySQL Ab 2012 Confidential
The MySQL AB Story
• MySQL
–#1 Open Source DBMS Worldwide
–50K downloads per day since 2003
–+13M active installations
• MySQL AB
–Founded by Monty Widenius & David Axmark
–My (pronounced Muu) is Monty's daugther
3
7. SkySQL Ab 2012 Confidential
MySQL Founders turned SkySQL Investors
The shirts however are still as bad ...
8. SkySQL Ab 2012 Confidential
MySQL AB
• Founded 1995
• 2007 : $100M. Preparation for IPO - Nasdaq
• Jan 2008 : Bought by Sun for $1B
• May 2009 : Sun bought by Oracle for $6B
• European Commission Enquiry
– DBMS Competition
• Oracle made some promises
• Green light just in time for Xmas 2009
5
9. SkySQL Ab 2012 Confidential
The Oracle promises to the EU
6
• Continued Availability of Storage Engine APIs
• Non-assertion against any 3rd party or vendor for the
implementation of storage engines under GPL
• Same licence commitment for commercial customers
• All MySQL® improvement licenses under the GPL
• Non-mandatory support
• Increased R&D
• MySQL® Customer Advisory Board
• MySQL® Storage Engine Advisory Board
• MySQL® Reference Manual
• Maintain customer’s choice to buy yearly support
10. SkySQL Ab 2012 Confidential
SkySQL in 60 Seconds
8
The employees are ex-MySQL(actually >90%)
The founders are ex-MySQL executives
The investors include the original founders of MySQL
Under Oracle's stewardship, a lot of MySQL customers are facing reduced service levels, price rises
& vendor lock-in
We offer 24/7 worldwide MySQL & MariaDB support, consulting & training for MySQL as well as
products designed to better deploy MySQL in the Cloud
– 85% of our revenues come from 24/7, 30-min-SLA support contracts
Operational since October 2010, we have over 350 customers incl. Amadeus, Deutsche Börse,
Deutsche Telekom, Juniper Networks, Pitney Bowes, Time Warner, Virgin Mobile & Vodafone
12. SkySQL Ab 2012 Confidential
SkySQL Group (currently ~70 people worldwide)
10
CEO - Patrik Sallner - Cloud & SaaS specialist (previously Nokia & F-Secure)
CTO - Ivan Zoratti - Ex. Dir. Field Services EMEA @ MySQL AB
EVP Product Man. - Kaj Arnö – Ex VP Engineering & VP Community MySQL AB
VP Support - Dean Ellis – Ex Director WW Support MySQL AB
VP Sales - Michael Carney – Ex. SEUR Sales Manager @ MySQL AB
VP Sales EMEA - Magnus Stenberg – Ex. NEUR Sales Manager @ MySQL AB
Engineering - Monty Program
~20 MySQL developers (including 8 of the 10 key core developers) lead by
Monty Widenius (MySQL founder)
13. SkySQL Ab 2012 Confidential
SkySQL is the alternative to Oracle
11
14. SkySQL Ab 2012 Confidential
SkySQL – Partner Eco-system
L3 Support Contracts
NRE Deals
End
Customer
L3 Support
Corrections
Hot Fixes
Monitoring
Consulting
Training
Corrections
POs
Contracts
Support Tickets
PR
SkySQL 24/7 WW SupportSkySQL 24/7 WW Support
L1, L2, L3 Support
Corrections
Hot Fixes
L1, L2, L3 Support
Contracts and NRE Deals
MHAMHA
Included in Advanced subscriptionIncluded in Advanced subscription
37. What is MariaDB?
• A branch of MySQL
– MariaDB is a backward compatible, drop-in replacement
for the MySQL Database Server
• Open Source
– The source code for MariaDB is publicly available from
Launchpad
– All code in MariaDB is open source
• No closed source modules
– Open bugs database
10.09.2012 SkySQL Ab 2011 Confidential 2
38. A Brief History
• First version of what would become MySQL
created by Monty Widenius 1983
• MySQL AB founded in 1995
• MySQL AB acquired by Sun Microsystems
early 2008 for $1bn
• Monty Program founded in late 2008
• Oracle acquire Sun April 2009
• MariaDB 5.1 released in February 2010
10.09.2012 SkySQL Ab 2011 Confidential 3
39. Who’s Behind MariaDB
• Monty Program
– ~30 core MySQL developers
– Located around the world
• Community
10.09.2012 SkySQL Ab 2011 Confidential 4
40. Community and MariaDB
• The goal of MariaDB is to provide a
community developed, stable and free
database
• MariaDB takes community contributions
• Many MariaDB Captains outside of Monty
Program (64% MP, 36% outside)
• Open development model
10.09.2012 SkySQL Ab 2011 Confidential 5
41. MariaDB 5.1 – Feb 2010
• Storage Engines
– PBXT*
– XtraDB
– FederatedX
– Aria
• Bugfixes
• Removal of Mutexes
10.09.2012 SkySQL Ab 2011 Confidential 6
MariaDB 5.1 = MySQL 5.1 + the following:
42. MariaDB 5.1
• Microsecond support
– Slow query log, SHOW PROCESSLIST etc
• Thread pool*
– Pool of threads instead of one thread /connection
10.09.2012 SkySQL Ab 2011 Confidential 7
MariaDB [(none)]> select id, time, time_ms, command, state
-> from information_schema.processlist, (select sleep(2)) t;
+----+------+----------+---------+-----------+
| id | time | time_ms | command | state |
+----+------+----------+---------+-----------+
| 37 | 2 | 2000.493 | Query | executing |
+----+------+----------+---------+-----------+
1 row in set (2.00 sec)
43. Table Elimination
10.09.2012 SkySQL Ab 2011 Confidential 8
create view actors as
select ACNAM_Name, ACDOB_birthdate, ACRAT_rating
from ac_anchor
left join ac_name on ac_anchor.AC_ID=ac_name.AC_ID
left join ac_birthdate on ac_anchor.AC_ID=ac_birthdate.AC_ID
left join ac_rating on (ac_anchor.AC_ID=ac_rating.AC_ID and
ac_rating.ACRAT_fromdate =
(select max(sub.ACRAT_fromdate)
from ac_rating sub where sub.AC_ID = ac_rating.AC_ID))
select ACRAT_rating from actors where ACNAM_name='Gary Oldman'
Actor
Name
Birth
date
Rating
1 n
44. Table Elimination
10.09.2012 SkySQL Ab 2011 Confidential 9
create view actors as
select ACNAM_Name, ACDOB_birthdate, ACRAT_rating
from ac_anchor
left join ac_name on ac_anchor.AC_ID=ac_name.AC_ID
left join ac_birthdate on ac_anchor.AC_ID=ac_birthdate.AC_ID
left join ac_rating on (ac_anchor.AC_ID=ac_rating.AC_ID and
ac_rating.ACRAT_fromdate =
(select max(sub.ACRAT_fromdate)
from ac_rating sub where sub.AC_ID = ac_rating.AC_ID))
select ACRAT_rating from actors where ACNAM_name='Gary Oldman'
Actor
Name
Birth
date
Rating
1 n
x
45. MariaDB 5.2 – Nov 2010
• Pluggable authentication
– Authentication handled by plugins
– PAM plugin included
• User statistics
– CLIENT_STATISTICS
– USER_STATISTICS
– INDEX_STATISTICS
– TABLE_STATISTICS
10.09.2012 SkySQL Ab 2011 Confidential 10
MariaDB 5.2 = MariaDB 5.1 + the following:
46. MariaDB 5.2
• Virtual Columns
– PERSISTENT or VIRTUAL
• Sphinx Storage Engine
– Allows access to Sphinx through MySQL
• Segmented MyISAM key cache
– Key cache divided into different segments
– Allows for better key cache concurrency
– Between 1 and 64 segments
10.09.2012 SkySQL Ab 2011 Confidential 11
48. MariaDB 5.3 – Jan 2012
• Handler socket
– Direct access to InnoDB/XtraDB storage layer
– No SQL statements
• Simple CRUD operations on tables
– Can be match faster for large batch operations
• Dynamic columns
– Allows you to create columns with dynamic
content
– Basically a blob with handling functions
10.09.2012 SkySQL Ab 2011 Confidential 13
MariaDB 5.3 = MariaDB 5.2 + the following:
50. Dynamic Columns
10.09.2012 SkySQL Ab 2011 Confidential 15
MariaDB [test]> select name from t1 where COLUMN_GET(dynstr, 1 as char(10)) = "black";
+-------------------------+
| name |
+-------------------------+
| nokia |
| htc Desire hd |
| BM/Lenovo Thinkpad X60s |
+-------------------------+
3 rows in set (0.01 sec)
MariaDB [test]>
MariaDB [test]> select name, COLUMN_GET(dynstr, 1 as char(10)) from t1 where
COLUMN_EXISTS(dynstr, 1);
+-------------------------+-----------------------------------+
| name | COLUMN_GET(dynstr, 1 as char(10)) |
+-------------------------+-----------------------------------+
| Funny shirt | blue |
| nokia | black |
| htc Desire hd | black |
| BM/Lenovo Thinkpad X60s | black |
+-------------------------+-----------------------------------+
4 rows in set (0.00 sec)
51. MariaDB 5.3
• Replication enhancements
– Original statement logged with RBR events
– Checksum for binlog events
– RBR fixed for tables with no PK
– Consistent snapshot between storage engines
• User feedback plugin
• Extended OpenGIS SFS
10.09.2012 SkySQL Ab 2011 Confidential 16
MariaDB 5.3 = MariaDB 5.2 + the following:
52. Progress Report
• Progress report for ALTER TABLE
10.09.2012 SkySQL Ab 2011 Confidential 17
MariaDB [employees]> alter table salaries engine = maria;
Stage: 1 of 2 'copy to tmp table' 17.55% of stage done
MariaDB [employees]> select id, user, db, command, state,
-> time_ms, progress from information_schema.processlist;
+---------+-------------------+-----------+----------+
| command | state | time_ms | progress |
+---------+-------------------+-----------+----------+
| Query | copy to tmp table | 23407.131 | 17.551 |
+---------+-------------------+-----------+----------+
1 row in set (0.47 sec)
53. Optimizer Enhancements
1. Sub-query optimizations
2. Join additions
3. Optimizations for derived tables and views
4. Disk access optimization
5. Optimizer control
10.09.2012 SkySQL Ab 2011 Confidential 18
54. Optimizer Enhancements
1. Sub-query optimizations
– Semi-join subquery optimization
– Materialization for non-correlated IN-queries
– Sub-query cache
10.09.2012 SkySQL Ab 2011 Confidential 19
Subqueries are finally usable in practice!
It is no longer necessary to rewrite subqueries
manually into joins or into separate queries
55. Optimizer Enhancements
2. Join additions
– Block Nested-Loop-Joins for outer joins
– Block Hash-Joins
– Batch-Key-Access
10.09.2012 SkySQL Ab 2011 Confidential 20
Before MariaDB 5.3 only Nested-Loop-Joins available
56. Optimizer Enhancements
3. Optimizations for derived tables and views
– Mergeable derived tables processed like VIEWs
– Optimizer can create indexes over materialized
derived tables
4. Disk access optimization
– Index Condition Pushdown
– Multi-Range-Read optimization (MRR)
5. Optimizer control
– @@optimizer_switch for all new options
10.09.2012 SkySQL Ab 2011 Confidential 21
60. MariaDB 5.5 – April 2012
• New optimized thread pool implementation
– Pool size dynamic
– Different implementation on Linux and Windows
• Fine grained tuning possible on Linux
• @@skip_replication
• LIMIT ROWS EXAMINED
10.09.2012 SkySQL Ab 2011 Confidential 25
MariaDB 5.5 = MySQL 5.5 + MariaDB 5.3 features
+ the following:
MariaDB [employees]> SELECT * from t1, t2
-> LIMIT 10 ROWS EXAMINED 1000;
61. Next MariaDB
• Global transaction Id (from MySQL 5.6)
• Multi-source replication
• New improved InnoDB (from MySQL 5.6)
• Cassandra storage engine
10.09.2012 SkySQL Ab 2011 Confidential 26
All highly speculative
Vote for features on
http://www.skysql.com/content/
new-server-functionality-have-your-say
62. A branch or a fork?
• MySQL 5.1 CE = MySQL EE <-> MariaDB 5.1
• MariaDB 5.2 and 5.3 <-> MySQL 5.1 CE & EE
• MySQL 5.5 CE != MySQL 5.5 EE
– Commercial extensions
– MariaDB 5.5 implements same features
• Merged nonetheless
• 5.6 ?
10.09.2012 SkySQL Ab 2011 Confidential 27
63. Getting MariaDB
• http://mariadb.org is the main place
• Available via OpenSUSE build services
• Also available via
– Gentoo
– FreeBSD
– Homebrew
– Slackware
– ArchLinux
• yum and apt repos available from MP
10.09.2012 SkySQL Ab 2011 Confidential 28
64. Support & Services
• Monty Program does NRE
• Enterprise level support available from SkySQL
– Monty Program providing L3
• Training, consulting etc available from SkySQL
• Others providing MariaDB services:
http://mariadb.org/service-providers/
10.09.2012 SkySQL Ab 2011 Confidential 29
65. More Information
• Downloads: http://mariadb.org/
• Mailing lists on launchpad
• #maria on freenode
• Knowledgbase: http://kb.askmonty.org/
• Support:
http://www.skysql.com/products/skysql-enterprise
• Training & consulting:
http://www.skysql.com/services/mysql/overview
• MariaDB book: MariaDB Crash Course by Ben Forta
10.09.2012 SkySQL Ab 2011 Confidential 30
70. Global Transaction ID
• Monitor replication progress in complex topologies
• Simple fail-over and slave promotion
A
B C
D E F
71. Global Transaction ID
• Monitor replication progress in complex topologies
• Simple fail-over and slave promotion
A
B C
D E F
72. Global Transaction ID
• Monitor replication progress in complex topologies
• Simple fail-over and slave promotion
A
B C
D E F
73. Global Transaction ID
• Monitor replication progress in complex topologies
• Simple fail-over and slave promotion
A
B C
D E F
74. Global Transaction ID
• Monitor replication progress in complex topologies
• Simple fail-over and slave promotion
A
B C
D E F
75. Global Transaction ID – Commands
Setting up a new slave:
Switch a slave to use GTID:
Change master:
76. Crash-safe slave
• Global Transaction ID enabled
• GTID position stored in InnoDB table
Conclusion: In MariaDB 10.0
use GTID
for your replication
setups
79. Parallel Slave
• Automatically detects independent
transactions
• Parallel even within the same table
• Adapts to master load
• Preserves commit order
81. Cassandra Storage Engine
• Access Cassandra from MariaDB with SQL
• Flexible schema, using “dynamic columns”
• Joins with non-Cassandra tables
• Transparent data mapping
• Many MariaDB nodes — one Cassandra ring
82. Connect Storage Engine
• CSV and Federated on steroids
• CSV, BIN, FMT, INI, XML, DBF
• column store
• ODBC, MySQL
• TBL (similar to MERGE)
• OEM (external library)
• Flexible table structure specification
• Developed by Olivier Bertrand
83. Sequence Storage Engine
• Completely virtual read-only tables
• Magically created on demand, magically
disappearing, no .frm files:
• Supports indexes, transactions, XA
87. TokuDB Storage Engine
• When you have billions of rows and terabytes
of data
• 10x to 20x faster INSERTs
• Compression — space saving up to 90%
• Online ALTER TABLE
• Both HDD and Flash
• Developed by Tokutek
88. Unique Use Case Example
• CONNECT Storage Engine (XML, ODBC,
etc.)
• CONNECT to Oracle (via ODBC), join results
from Cassandra and store the result in
InnoDB
– Yes, collaboration between Oracle, Cassandra
and MariaDB is possible today
• Remember to turn on engine condition
pushdown
90. Optimizer: Statistics
• Engine independent
– stored in mysql database
– stable, uniform, controlled
– for indexes and columns
– used instead of or together with engine
statistics
• Histograms
98. Roles
• SQL standard implementation of roles
– CREATE ROLE, DROP ROLE
– GRANT role TO user, GRANT role TO role
– SET ROLE
– DEFINER=role
– CURRENT_ROLE
– INFORMATION_SCHEMA tables
• GSoC–2013, Vicentiu Ciorbaru
99. Misc. enhancements
• DELETE … RETURNING
• ALTER … IF [NOT] EXISTS
• Named dynamic columns
• Table discovery, assisted table
discovery
• Multiple GET_LOCK
– Contributed by Konstantin Osipov
• New regular expression library
– GSoC–2013, Sudheera Palihakkara
100. Merged from 5.6
• InnoDB
• Performance_schema
• Online ALTER TABLE
• ORDER BY … LIMIT optimization
• Privileges on temporary tables
• Character set extensions
• GET DIAGNOSTICS
• TO_BASE64(), FROM_BASE64()
102. MariaDB Audit Plugin
• Track user access to
server and data
• Track all type of access
to data in tables
• Download the MariaDB
Audit Plugin Library
from http://
www.skysql.com/downlo
ads/mariadb-audit-plu
gin-beta
Suddenly it’s straight forward to comply with laws and industry standards
Logged information:
• Timestamp
• Server-Host
• User Client-Host
• Connection-ID
• Query-ID
• Operation
• Database Table
• Error-Code
• ...and more…
104. Logging
• Connect events
– Logs connects, disconnects, and failed connects + error code
• Query events
– Executed queries will be logged with user information
– Queries are logged exactly as executed and might reveal sensitive
data in the logs
– Also queries that cannot be executed will be logged, e.g. user
doesn’t have the rights or a syntax fault
• Table events
– Only available in MariaDB 5.5.31 or newer (not available in
MySQL)
– Views, Stored Procedures, Functions and Triggers can access