Archive for the ‘MariaDB’ Category

Trip Report: Bulgarian Web Summit

I have never been to Sofia, Bulgaria till this past February 2016, and boy did I enjoy myself. I visited the Bulgaria Web Summit and spoke there amongst many others. A few notes:

  • Almost 800 people (so more than last year); hence the event was sold out
  • Missed the RocksDB talk due to the massive Q&A session that went on afterwards.
  • Very interesting messaging


  • LinvoDB (embeddable MongoDB alternative) — LinvoDB /
  • Library written entirely in JavaScript without any dependencies. Converts any KV store to a MongoDB-like API, with Mongoose-like models, and live queries
  • Use case: < 1 million objects (indexes are in memory using a binary search tree; so don’t use it for more). HTML5/Electron/NW.js. Best used with AngularJS/React and maybe Meteor. Can also use NativeScript or React Native. You can use it with node.js but its not recommended for server use cases.
  • Works with SQLite or LevelDB (why not RocksDB yet?). Can also use with IndexedDB/LocalStorage
  • Implemented almost entirely the MongoDB query language. Gives you automatic indexes.
  • FTS in memory (linvodb-fts) – uses trie/metaphone modules for node.js. Can also do p2p replication, persistent indexes, compound indexes

My talk

I enjoyed speaking about MariaDB Server as always, and its clear that many people had a lot of questions about it. Slides. Video. It was tweeted that I had to answer questions for about as long as my talk, afterwards, and it was true :)

I got to meet Robert Nyman at the social event (small world, since he works at the office where Jonas of ex-MySQL fame does). Also met someone very interested in contributing to InfiniDB. It was nice having a beer with my current colleague Salle too. And speaking to the track moderator, Alexander Todorov was also a highlight – since we had many common topics, and he does an amazing amount of work around automation and QA. His blog is worth a read.

FOSDEM 2016 notes

While being on the committee for the FOSDEM MySQL & friends devroom, I didn’t speak at that devroom (instead I spoke at the distributions devroom). But when I had time to pop in, I did take some notes on sessions that were interesting to me, so here are the notes. I really did enjoy Yoshinori Matsunobu’s session (out of the devroom) on RocksDB and MyRocks and I highly recommend you to watch the video as the notes can’t be very complete without the great explanation available in the slide deck. Anyway there are videos from the MySQL and friends devroom.

MySQL & Friends Devroom

MySQL Group Replication or how good theory gets into better practice – Tiago Jorge

  • Multi-master update everywhere with built-in automatic distributed recovery, conflict detection and group membership
  • Group replication added 3 PERFORMANCE_SCHEMA tables
  • If a server leaves the group, the others will be automatically informed (either via a crash or if you execute STOP GROUP REPLICATION)
  • Cloud friendly, and it is self-healing. Integrated with server core via a well-defined API. GTIDs, row-based replication, PERFORMANCE_SCHEMA. Works with MySQL Router as well.
  • Multi-master update everywhere. Conflicts will be detected and dealt with, via the first committer wins rule. Any 2 transactions on different servers can write to the same tuple.
  • /
  • Q: When a node leaves a group, will it still accept writes? A: If you leave voluntarily, it can still accept writes as a regular MySQL server (this needs to be checked)
  • Online DDL is not supported
  • Checkout the video

ANALYZE for statements – Sergei Petrunia

  • a lot like EXPLAIN ANALYZE (in PostgreSQL) or PLAN_STATISTICS (in Oracle)
  • Looks like explain output with execution statistics
  • slides and video

Preparse Query Rewrite Plugins – Sveta Smirnova / Martin Hansson

  • Query rewwriting with a proxy might be too complex, so they thought of doing it inside the server. There is a pre-parse (string-to-string) and a post-parse (parse tree) API. Pre-parse: low overhead, but no structure. Post-parse: retains structure, but requires re-parsing (no destructive editing), need to traverse parse tree and will only work on select statements
  • Query rewrite API builds on top of teh Audit API, and then you’ve got the pre-parse/post-parse APIs on the top that call out to the plugins
  • video

Fedora by the Numbers – Remy DeCausemaker

MyRocks: RocksDB Storage Engine for MySQL (LSM Databases at Facebook) – Yoshinori Matsunobu

  • SSD/Flash is getting affordable but MLC Flash is still expensive. HDD has large capacity but limited IOPS (reducing rw IOPS is very important and reducing write is harder). SSD/Flash has great read iops but limited space and write endurance (reducing space here is higher priority)
  • Punch hole compression in 5.7, it is aligned to the sector size of your device. Flash device is basically 4KB. Not 512 bytes. So you’re basically wasting a lot of space and the compression is inefficient
  • LSM tends to have a read penalty compared to B-Tree, like InnoDB. So a good way to reduce the read penalty is to use a Bloom Filter (check key may exist or not without reading data, and skipping read i/o if it definitely does not exist)
  • Another penalty is for delete. It puts them into tombstones. So there is the workaround called SingleDelete.
  • LSMs are ideal for write heavy applications
  • Similar features as InnoDB, transactions: atomicity, MVCC/non-locking consistent read, read committed repeatable read (PostgreSQL-style), Crash safe slave and master. It also has online backup (logical backup by mysqldump and binary backup by myrocks_hotbackup).
  • Much smaller space and write amplification compared to InnoDB
  • Reverse order index (Reverse Column Family). SingleDelete. Prefix bloom filter. Mem-comparable keys when using case sensitive collations. Optimizer statistics for diving into pages.
  • RocksDB is great for scanning forward but ORDER BY DESC queries are slow, hence they use reverse column families to make descending scan a lot faster
  • watch the video

MariaDB Berlin meetup

Come meet the MariaDB Server and MariaDB MaxScale developers in Berlin (April 12 2016), talk about new upcoming things in MariaDB Server 10.2, as well as the next MariaDB MaxScale releases. Let’s not forget the talks about the upcoming developments with the Connectors.

It will be a fun-filled, information-packed night. Food & drink will be provided.

For more information and the opportunity to RSVP check-out our meetup page. RSVP soon as we only have 99 spaces available.

Speaking in April 2016

I have a few speaking engagements coming up in April 2016, and I hope to see you at some of these events. I’m always available to talk shop (opensource, MariaDB Server, MySQL, etc.) so looking forward to saying hi.

  • A short talk at the MariaDB Berlin Meetup on April 12 2016 – this should be fun if you’re in Berlin as you’ll see many people from the MariaDB Server and MariaDB MaxScale world talk about what they’re doing for the next releases.
  • – April 14-15 2016, tutorial day on 16 – I’ve not been to India since about 2011, so I’m looking forward to this trip to Bangalore (and my first time to a HasGeek event). Getting the email from the conference chair was very nice, and I believe I’m giving a keynote and a tutorial.
  • Percona Live Data Performance Conference 2016 – April 18-21 2016 – this is obviously the event for the MySQL ecosystem, and I’m happy to state that I’m giving a tutorial and a talk at this event.
  • Open Source Data Centre Conference – April 26-28 2016 – Its been a few years since I’ve been here, but I’m looking forward to presenting to the audience again.

There’s some prep work for some internal presentations and tutorials that I’ll be running in Berlin at the company meeting as well.

Speaking in March 2016

There are a few upcoming speaking gigs this March 2016:

Two talks in London and one keynote in Singapore, while I will also moderate the database track on the last day of the conference as well. I’ve never been to flossUK before, but the schedule looks very interesting and I’m looking forward to it. FOSSASIA is an event I’ve been going to regularly since it was held in varying places (Vietnam, Cambodia, before finally settling down in Singapore) so this is an always exciting time.

Would happily meet you to talk shop, feel free to drop me an email: colin[at]

Amazon RDS updates February 2016

I think one of the big announcements that came out from the Amazon Web Services world in October 2015 was the fact that you could spin up instances of MariaDB Server on it. You would get MariaDB Server 10.0.17. As of this writing, you are still getting that (the MySQL shipping then was 5.6.23, and today you can create a 5.6.27 instance, but there were no .24/.25/.26 releases). I’m hoping that there’s active work going on to make MariaDB Server 10.1 available ASAP on the platform.

Just last week you would have noticed that Amazon has rolled out MySQL 5.7.10. The in-place upgrades are not available yet, so updating is via dump/reload or using read replicas. According to the forums, a lot of people have been wanting to use the JSON functionality.

Are you trying MySQL 5.7 on RDS? How about your usage of MariaDB Server 10.0 on RDS? I’d be interested in feedback either as a comment here, or via email.