SlideShare a Scribd company logo
Sergei Petrunia
sergey@mariadb.com
MyRocks in MariaDB
Why and How
MariaDB Developer UnConference
April 9-10th
2017
New York
11:00:56 2
About MariaDB
What is MyRocks?
11:00:56 3
What is MyRocks
●
RocksDB + MySQL = MyRocks
●
LSM architecture
●
Better compression
●
Better IO efficiency
●
Write optimizations
− Bulk load
− No-read writes
●
Used and verified at Facebook
11:00:56 4
MyRocks needs adoption and community
● Currently, it is in github.com/facebook/mysql­5.6 
●
No binaries
●
No packages
●
Very much “in-house” experience
− Special branch of MySQL
− Special way to compile
− Special command to run tests
− ...
11:00:56 5
MyRocks + MariaDB = ♥
●
New technology
●
Adoption
●
Packaging
●
Community
●
MariaDB features
11:00:56 6
Plan
1. Tasks for porting MyRocks
2. Current status
3. Future
11:00:56 7
Tasks for putting MyRocks into MariaDB
●
Port MyRocks
from facebook/mysql-5.6 to MariaDB
●
Do builds and packages
●
Catch a MariaDB release train
11:00:56 8
Checklist for putting MyRocks into MariaDB
●
Port MyRocks
from facebook/mysql-5.6 to MariaDB
●
Do builds and packages
●
Catch a MariaDB release train
11:00:56 9
Porting MyRocks
SQL layer
RocksDB
MyRocks
11:00:56 10
Porting MyRocks
SQL layer
RocksDB
Read-free
replication
More
counters
Gap lock
use detector
Extra
range info
Bloom
filter use
MyRocks
...
counter++
...
●
MyRocks is not just storage/rocksdb/*
11:00:56 11
Porting MyRocks
●
Resolve the SQL layer differences
●
Resolve MariaDB vs MySQL
differences
− Index Condition pushdown
− Extended Keys
− Group Commit
− EXPLAIN output changes
− Extra/missing warnings
− …
11:00:56 12
Checklist for putting MyRocks into MariaDB
●
Port MyRocks
from facebook/mysql-5.6 to MariaDB
●
Do builds and packages
●
Catch a MariaDB release train
11:00:56 13
Do builds and packages
●
Facebook/mysql-5.6 builds statically
●
We want ha_rocksdb.so
●
We want packages
− deb, rpm, bintar, windows zip, ...
●
RocksDB uses compression libraries
− Need to link against them
− Need to have proper dependencies
11:00:56 14
Checklist for putting MyRocks into MariaDB
●
Port MyRocks
from facebook/mysql-5.6 to MariaDB
●
Do builds and packages
●
Catch a MariaDB release train
11:01:01 15
MariaDB releases
●
MariaDB 10.0:
− Alpha: 12 Nov 2012
− Stable: 31 Mar 2014
●
MariaDB 10.1 (Stable)
− Alpha: 30 Jun 2014
− Stable: 17 Oct 2015
●
MariaDB 10.2 (RC)
− Alpha: 18 Apr 2016
− RC: 17 Feb 2017
− Stable: soon
Get into a MariaDB Release before it is declared stable
●
MariaDB 10.3
− “alpha soon”
11:01:01 16
Plugin Maturity
●
Plugins declare their maturity
− unknown, experimental, alpha, beta, gamma, stable
●
mysqld --plugin-maturity=level
− will not load plugins less mature than level.
●
This is how MyRocks can get into MariaDB 10.2
− Plugin with maturity=alpha.
11:00:56 17
Current status
11:01:01 18
Current status
●
MariaDB 10.2.5 RC2 includes MyRocks
●
Features
●
Packaging
●
Quality
11:01:01 19
Current status
●
MariaDB 10.2.5 RC2 includes MyRocks
●
Features
●
Packaging
●
Quality
11:00:56 20
Feature status
●
Working
− General server functionality
− Optimizer-related
● Bloom filter support
− Tests
●
Non-working yet
− Interplay between the storage engine and the binlog
● Group commit
● Read-Free-Slave
● GTID
− Gap Lock detector
11:01:01 21
diff -u mariarocks myrocks
3K line diff for the code
- CMake build changes
- MariaDB's differences in Extended Keys
- MariaDB's differences in Index Condition Pushdown
- MariaDB calls ha_statistic_increment(...) above the storage engine
- Implement prepare_*_scan(), Bloom Filter works for ORDER BY DESC
- Storage Engine API function signature changes
- s/MySQL/MariaDB/ in names of structs, constants, etc
- #ifdef-away code related to replication and binlog
- #ifdef-away extra diagnostics like SHOW ENGINE TRANSACTION STATUS
- ...
8K lines diff for tests:
- MariaDB has different default values for SQL columns
- EXPLAIN output is slightly different
- Handler_xxx counters counted a bit differently
- MTR explicitly logs connection open/switch/etc
- mysql-test/suite/$MYROCKS_TEST → storage/rocksdb/mysql-test/$MYROCKS_TEST
- ...
11:00:56 22
Gap Lock Detector
●
SQL level feature
●
Detects queries that use gap locking
●
Workflow
− Run with InnoDB, detect and remove the querie
− Migrate to MyRocks
●
Objections to pushing
− MyRocks has features on SQL layer!
●
?
11:01:01 23
Current status
●
MariaDB 10.2.5 RC2 includes MyRocks
●
Features
●
Packaging
●
Quality
11:01:01 24
Packaging in facebook/mysql-5.6
●
MyRocks is linked statically
●
RocksDB is a submodule (@revno)
− Not a dependency
●
Can compile with compression libraries
− Snappy
− Zlib
− ZStandard
− ...
11:01:01 25
Packaging in MariaDB
●
MyRocks is built as ha_rocksdb.so
●
RocksDB is a submodule (@revno)
− Linked in statically in the .so
●
Compression libraries
− Bintar: links statically (snappy, zlib)
− .deb/.rpm: package has a dependency (snappy, zlib)
− Windows zip/MSI: zlib
●
rocksdb_hotbackup is missing
− but works (have an MDEV for this)
11:01:01 26
Compiling in MariaDB
●
MyRocks is built as ha_rocksdb.so
●
MyRocks is compiled by default
− Except for unsupported platforms
●
MyRocks tests can be run as regular tests
./mysql-test-run rocksdb.type_varchar
11:01:01 27
Current status
●
MariaDB 10.2.5 RC2 includes MyRocks
●
Features
●
Packaging
●
Quality
11:01:01 28
MyRocks Quality
●
Alpha-maturity plugin in RC-level MariaDB Server
●
MyRocks tests are run in MariaDB buildbot
●
There are failing testcases
− Not necessarily MyRocks bugs
− Working on this
●
There are missing features
− Can finish those that touch
only storage/rocksdb
− May be harder if the feature
touches the SQL layer.
11:00:56 29
Future
11:01:01 30
Future
●
Fix the failing tests
− Some failures are from the upstream
●
Usability improvements
●
Interplay between the Storage Engine and Binlog
− Get it to work
− MariaDB's Group Commit
− Per-engine mysql.slave_gtid_pos
− Parallel Slave support?
●
Keep merging from upstream.
11:00:56 31
Thanks!

More Related Content

PDF
MyRocks in MariaDB
PDF
Say Hello to MyRocks
PPTX
When is MyRocks good?
PDF
MyRocks in MariaDB | M18
PDF
MySQL Storage Engines - which do you use? TokuDB? MyRocks? InnoDB?
PDF
M|18 How to use MyRocks with MariaDB Server
PPTX
M|18 How Facebook Migrated to MyRocks
PPTX
M|18 Writing Stored Procedures in the Real World
MyRocks in MariaDB
Say Hello to MyRocks
When is MyRocks good?
MyRocks in MariaDB | M18
MySQL Storage Engines - which do you use? TokuDB? MyRocks? InnoDB?
M|18 How to use MyRocks with MariaDB Server
M|18 How Facebook Migrated to MyRocks
M|18 Writing Stored Procedures in the Real World

What's hot (20)

PPTX
Myrocks in the wild wild west! FOSDEM 2020
PDF
MariaDB 5.5 and what comes next - Percona Live NYC 2012
PDF
M|18 Under the Hood: Galera Cluster
PDF
Distributions from the view a package
PDF
When is Myrocks good? 2020 Webinar Series
PDF
Percona XtraDB Cluster ( Ensure high Availability )
PDF
MariaDB: The 2012 Edition
PDF
MySQL High Availability Solutions
PDF
Ansible is Our Wishbone(Automate DBA Tasks With Ansible)
PDF
MyRocks Deep Dive
PDF
InnoDB Cluster Experience (MySQL User Camp)
PDF
High Availability with Galera Cluster - SkySQL Road Show 2013 in Berlin
PDF
Tuning Linux for your database FLOSSUK 2016
PDF
My first moments with MongoDB
PDF
MariaDB 10.0 - SkySQL Paris Meetup
PDF
A beginners guide to MariaDB
PDF
MariaDB - a MySQL Replacement #SELF2014
PDF
Almost Perfect Service Discovery and Failover with ProxySQL and Orchestrator
PDF
MariaDB 10: A MySQL Replacement - HKOSC
PDF
A26 MariaDB : The New&Implemented MySQL Branch by Colin Charles
Myrocks in the wild wild west! FOSDEM 2020
MariaDB 5.5 and what comes next - Percona Live NYC 2012
M|18 Under the Hood: Galera Cluster
Distributions from the view a package
When is Myrocks good? 2020 Webinar Series
Percona XtraDB Cluster ( Ensure high Availability )
MariaDB: The 2012 Edition
MySQL High Availability Solutions
Ansible is Our Wishbone(Automate DBA Tasks With Ansible)
MyRocks Deep Dive
InnoDB Cluster Experience (MySQL User Camp)
High Availability with Galera Cluster - SkySQL Road Show 2013 in Berlin
Tuning Linux for your database FLOSSUK 2016
My first moments with MongoDB
MariaDB 10.0 - SkySQL Paris Meetup
A beginners guide to MariaDB
MariaDB - a MySQL Replacement #SELF2014
Almost Perfect Service Discovery and Failover with ProxySQL and Orchestrator
MariaDB 10: A MySQL Replacement - HKOSC
A26 MariaDB : The New&Implemented MySQL Branch by Colin Charles
Ad

Similar to MyRocks in MariaDB: why and how (20)

PDF
MariaDB: in-depth (hands on training in Seoul)
PDF
MariaDB 10.1 what's new and what's coming in 10.2 - Tokyo MariaDB Meetup
PDF
The Complete MariaDB Server tutorial
PDF
Meet MariaDB 10.1 at the Bulgaria Web Summit
PDF
MariaDB - the "new" MySQL is 5 years old and everywhere (LinuxCon Europe 2015)
PDF
MariaDB: The New M In LAMP - SCALE10x
PDF
The Complete MariaDB Server Tutorial - Percona Live 2015
PDF
MariaDB 10: The Complete Tutorial
PDF
Webinar - Key Reasons to Upgrade to MySQL 8.0 or MariaDB 10.11
PPT
Maria db the new mysql (Colin Charles)
PDF
DebConf 2020: What’s New in MariaDB Server 10.5 and Galera 4?
PDF
MariaDB 初学者指南
PDF
Introduction of MariaDB 2017 09
PDF
MariaDB 10 and what's new with the project
PDF
Mariadb10 和新项目中有什么
PDF
MariaDB - Fast, Easy & Strong - Get Started Tutorial
PDF
Differences between MariaDB 10.3 & MySQL 8.0
PDF
The MySQL Server ecosystem in 2016
PDF
Open11 maria db the new m in lamp
PPTX
MariaDB Enterprise & MariaDB Enterprise Cluster - MariaDB Webinar July 2014
MariaDB: in-depth (hands on training in Seoul)
MariaDB 10.1 what's new and what's coming in 10.2 - Tokyo MariaDB Meetup
The Complete MariaDB Server tutorial
Meet MariaDB 10.1 at the Bulgaria Web Summit
MariaDB - the "new" MySQL is 5 years old and everywhere (LinuxCon Europe 2015)
MariaDB: The New M In LAMP - SCALE10x
The Complete MariaDB Server Tutorial - Percona Live 2015
MariaDB 10: The Complete Tutorial
Webinar - Key Reasons to Upgrade to MySQL 8.0 or MariaDB 10.11
Maria db the new mysql (Colin Charles)
DebConf 2020: What’s New in MariaDB Server 10.5 and Galera 4?
MariaDB 初学者指南
Introduction of MariaDB 2017 09
MariaDB 10 and what's new with the project
Mariadb10 和新项目中有什么
MariaDB - Fast, Easy & Strong - Get Started Tutorial
Differences between MariaDB 10.3 & MySQL 8.0
The MySQL Server ecosystem in 2016
Open11 maria db the new m in lamp
MariaDB Enterprise & MariaDB Enterprise Cluster - MariaDB Webinar July 2014
Ad

More from Sergey Petrunya (20)

PDF
MariaDB's New-Generation Optimizer Hints
PDF
New optimizer features in MariaDB releases before 10.12
PDF
MariaDB's join optimizer: how it works and current fixes
PDF
Improved histograms in MariaDB 10.8
PDF
Improving MariaDB’s Query Optimizer with better selectivity estimates
PDF
JSON Support in MariaDB: News, non-news and the bigger picture
PDF
Optimizer Trace Walkthrough
PDF
ANALYZE for Statements - MariaDB's hidden gem
PDF
Optimizer features in recent releases of other databases
PDF
MariaDB 10.4 - что нового
PDF
Using histograms to get better performance
PDF
MariaDB Optimizer - further down the rabbit hole
PDF
Query Optimizer in MariaDB 10.4
PDF
Lessons for the optimizer from running the TPC-DS benchmark
PDF
MariaDB 10.3 Optimizer - where does it stand
PDF
New Query Optimizer features in MariaDB 10.3
PDF
Histograms in MariaDB, MySQL and PostgreSQL
PDF
Common Table Expressions in MariaDB 10.2
PDF
Эволюция репликации в MySQL и MariaDB
PDF
Common Table Expressions in MariaDB 10.2 (Percona Live Amsterdam 2016)
MariaDB's New-Generation Optimizer Hints
New optimizer features in MariaDB releases before 10.12
MariaDB's join optimizer: how it works and current fixes
Improved histograms in MariaDB 10.8
Improving MariaDB’s Query Optimizer with better selectivity estimates
JSON Support in MariaDB: News, non-news and the bigger picture
Optimizer Trace Walkthrough
ANALYZE for Statements - MariaDB's hidden gem
Optimizer features in recent releases of other databases
MariaDB 10.4 - что нового
Using histograms to get better performance
MariaDB Optimizer - further down the rabbit hole
Query Optimizer in MariaDB 10.4
Lessons for the optimizer from running the TPC-DS benchmark
MariaDB 10.3 Optimizer - where does it stand
New Query Optimizer features in MariaDB 10.3
Histograms in MariaDB, MySQL and PostgreSQL
Common Table Expressions in MariaDB 10.2
Эволюция репликации в MySQL и MariaDB
Common Table Expressions in MariaDB 10.2 (Percona Live Amsterdam 2016)

Recently uploaded (20)

PDF
Nekopoi APK 2025 free lastest update
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PDF
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
PDF
System and Network Administraation Chapter 3
PDF
Digital Strategies for Manufacturing Companies
PPTX
CHAPTER 2 - PM Management and IT Context
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PDF
Softaken Excel to vCard Converter Software.pdf
PDF
System and Network Administration Chapter 2
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
PDF
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
PDF
wealthsignaloriginal-com-DS-text-... (1).pdf
PDF
top salesforce developer skills in 2025.pdf
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PDF
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
PPTX
Essential Infomation Tech presentation.pptx
Nekopoi APK 2025 free lastest update
Navsoft: AI-Powered Business Solutions & Custom Software Development
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
2025 Textile ERP Trends: SAP, Odoo & Oracle
Which alternative to Crystal Reports is best for small or large businesses.pdf
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
System and Network Administraation Chapter 3
Digital Strategies for Manufacturing Companies
CHAPTER 2 - PM Management and IT Context
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
Softaken Excel to vCard Converter Software.pdf
System and Network Administration Chapter 2
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
wealthsignaloriginal-com-DS-text-... (1).pdf
top salesforce developer skills in 2025.pdf
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
Essential Infomation Tech presentation.pptx

MyRocks in MariaDB: why and how

  • 1. Sergei Petrunia sergey@mariadb.com MyRocks in MariaDB Why and How MariaDB Developer UnConference April 9-10th 2017 New York
  • 3. 11:00:56 3 What is MyRocks ● RocksDB + MySQL = MyRocks ● LSM architecture ● Better compression ● Better IO efficiency ● Write optimizations − Bulk load − No-read writes ● Used and verified at Facebook
  • 4. 11:00:56 4 MyRocks needs adoption and community ● Currently, it is in github.com/facebook/mysql­5.6  ● No binaries ● No packages ● Very much “in-house” experience − Special branch of MySQL − Special way to compile − Special command to run tests − ...
  • 5. 11:00:56 5 MyRocks + MariaDB = ♥ ● New technology ● Adoption ● Packaging ● Community ● MariaDB features
  • 6. 11:00:56 6 Plan 1. Tasks for porting MyRocks 2. Current status 3. Future
  • 7. 11:00:56 7 Tasks for putting MyRocks into MariaDB ● Port MyRocks from facebook/mysql-5.6 to MariaDB ● Do builds and packages ● Catch a MariaDB release train
  • 8. 11:00:56 8 Checklist for putting MyRocks into MariaDB ● Port MyRocks from facebook/mysql-5.6 to MariaDB ● Do builds and packages ● Catch a MariaDB release train
  • 9. 11:00:56 9 Porting MyRocks SQL layer RocksDB MyRocks
  • 10. 11:00:56 10 Porting MyRocks SQL layer RocksDB Read-free replication More counters Gap lock use detector Extra range info Bloom filter use MyRocks ... counter++ ... ● MyRocks is not just storage/rocksdb/*
  • 11. 11:00:56 11 Porting MyRocks ● Resolve the SQL layer differences ● Resolve MariaDB vs MySQL differences − Index Condition pushdown − Extended Keys − Group Commit − EXPLAIN output changes − Extra/missing warnings − …
  • 12. 11:00:56 12 Checklist for putting MyRocks into MariaDB ● Port MyRocks from facebook/mysql-5.6 to MariaDB ● Do builds and packages ● Catch a MariaDB release train
  • 13. 11:00:56 13 Do builds and packages ● Facebook/mysql-5.6 builds statically ● We want ha_rocksdb.so ● We want packages − deb, rpm, bintar, windows zip, ... ● RocksDB uses compression libraries − Need to link against them − Need to have proper dependencies
  • 14. 11:00:56 14 Checklist for putting MyRocks into MariaDB ● Port MyRocks from facebook/mysql-5.6 to MariaDB ● Do builds and packages ● Catch a MariaDB release train
  • 15. 11:01:01 15 MariaDB releases ● MariaDB 10.0: − Alpha: 12 Nov 2012 − Stable: 31 Mar 2014 ● MariaDB 10.1 (Stable) − Alpha: 30 Jun 2014 − Stable: 17 Oct 2015 ● MariaDB 10.2 (RC) − Alpha: 18 Apr 2016 − RC: 17 Feb 2017 − Stable: soon Get into a MariaDB Release before it is declared stable ● MariaDB 10.3 − “alpha soon”
  • 16. 11:01:01 16 Plugin Maturity ● Plugins declare their maturity − unknown, experimental, alpha, beta, gamma, stable ● mysqld --plugin-maturity=level − will not load plugins less mature than level. ● This is how MyRocks can get into MariaDB 10.2 − Plugin with maturity=alpha.
  • 18. 11:01:01 18 Current status ● MariaDB 10.2.5 RC2 includes MyRocks ● Features ● Packaging ● Quality
  • 19. 11:01:01 19 Current status ● MariaDB 10.2.5 RC2 includes MyRocks ● Features ● Packaging ● Quality
  • 20. 11:00:56 20 Feature status ● Working − General server functionality − Optimizer-related ● Bloom filter support − Tests ● Non-working yet − Interplay between the storage engine and the binlog ● Group commit ● Read-Free-Slave ● GTID − Gap Lock detector
  • 21. 11:01:01 21 diff -u mariarocks myrocks 3K line diff for the code - CMake build changes - MariaDB's differences in Extended Keys - MariaDB's differences in Index Condition Pushdown - MariaDB calls ha_statistic_increment(...) above the storage engine - Implement prepare_*_scan(), Bloom Filter works for ORDER BY DESC - Storage Engine API function signature changes - s/MySQL/MariaDB/ in names of structs, constants, etc - #ifdef-away code related to replication and binlog - #ifdef-away extra diagnostics like SHOW ENGINE TRANSACTION STATUS - ... 8K lines diff for tests: - MariaDB has different default values for SQL columns - EXPLAIN output is slightly different - Handler_xxx counters counted a bit differently - MTR explicitly logs connection open/switch/etc - mysql-test/suite/$MYROCKS_TEST → storage/rocksdb/mysql-test/$MYROCKS_TEST - ...
  • 22. 11:00:56 22 Gap Lock Detector ● SQL level feature ● Detects queries that use gap locking ● Workflow − Run with InnoDB, detect and remove the querie − Migrate to MyRocks ● Objections to pushing − MyRocks has features on SQL layer! ● ?
  • 23. 11:01:01 23 Current status ● MariaDB 10.2.5 RC2 includes MyRocks ● Features ● Packaging ● Quality
  • 24. 11:01:01 24 Packaging in facebook/mysql-5.6 ● MyRocks is linked statically ● RocksDB is a submodule (@revno) − Not a dependency ● Can compile with compression libraries − Snappy − Zlib − ZStandard − ...
  • 25. 11:01:01 25 Packaging in MariaDB ● MyRocks is built as ha_rocksdb.so ● RocksDB is a submodule (@revno) − Linked in statically in the .so ● Compression libraries − Bintar: links statically (snappy, zlib) − .deb/.rpm: package has a dependency (snappy, zlib) − Windows zip/MSI: zlib ● rocksdb_hotbackup is missing − but works (have an MDEV for this)
  • 26. 11:01:01 26 Compiling in MariaDB ● MyRocks is built as ha_rocksdb.so ● MyRocks is compiled by default − Except for unsupported platforms ● MyRocks tests can be run as regular tests ./mysql-test-run rocksdb.type_varchar
  • 27. 11:01:01 27 Current status ● MariaDB 10.2.5 RC2 includes MyRocks ● Features ● Packaging ● Quality
  • 28. 11:01:01 28 MyRocks Quality ● Alpha-maturity plugin in RC-level MariaDB Server ● MyRocks tests are run in MariaDB buildbot ● There are failing testcases − Not necessarily MyRocks bugs − Working on this ● There are missing features − Can finish those that touch only storage/rocksdb − May be harder if the feature touches the SQL layer.
  • 30. 11:01:01 30 Future ● Fix the failing tests − Some failures are from the upstream ● Usability improvements ● Interplay between the Storage Engine and Binlog − Get it to work − MariaDB's Group Commit − Per-engine mysql.slave_gtid_pos − Parallel Slave support? ● Keep merging from upstream.