MySQL 5.1 Plugin Development, by Sergei Golubchik and Andrew Hutchings. Packt Publishing, 2010. Executive summary: Highly recommended. If you want to develop MySQL extensions, buy this book. It's a must, written by two expert professionals who probably know more than anyone else on this matter. The book is full of practical examples explained with the theoretical information necessary to make it stick. This book fills a gap in the world of MySQL documentation. Although the MySQL docs are extensive and thorough, to the point that sometimes you wished that the writers were less verbose and stick more to the topic, when … |
With Paul McCullagh’s PBXT storage engine getting integrated into MariaDB 5.1, it’s never been easier to it out. So we have, on a slave off one of our own production systems which gets lots of inserts from our Zabbix monitoring system.
That’s possibly an ideal usage profile, since PBXT is a log based engine (simplistically stated, it indexes its transaction logs, rather than rewriting data from log into index and indexing that) so it should require less disk I/O than say InnoDB. And that means it should be particularly suited to for instance logging, which have lots of inserts on a sustained basis. Note that for short insert burst you may not see a difference with InnoDB because of caching, but sustain it and then you can notice.
Because PBXT has such different/distinct architecture there’s a lot of learning involved. Together …
[Read more]I just spotted the youtube video of my OpenSQL Camp (Portland 2009) talk on An Open Storage Engine API. I talked about some of technical issues for implementing storage engines across many SQL front ends, not just MySQL.
You can find this talk and other mostly technical material at http://tokutek.com/technology/.
Here’s something that’s not really documented anywhere (unless you count ha_innodb.cc as a source of server documentation). You may have some idea about the MySQL/Drizzle row buffer format. This is passed around the storage engine interface: in for write_row and update_row and out for the various scan and index read methods.
If you want to see the docs for it that exist in the code, check out store_key_val_for_row in ha_innodb.cc.
However, there is another format that is passed to your engine (and that your engine is expected to understand) and for lack of a better name, I’m going to call it the key tuple format. The first place you’ll probably see this is when implementing the index_read function for a Cursor (or handler in MySQL speak).
You get two things: a pointer to the buffer and the length of the buffer. Since a key can be made up of multiple parts, some of which can be NULL and some of which can be of …
[Read more]The NoSQL/relational database debate has been going on for quite some time. MariaDB, like MySQL is relational. And if you read these series of blog posts, you’ll realise that if you use MySQL correctly, you can achieve quite a lot.
- It all starts with Kellan Elliott-McCrea with his introductory post on Using, Abusing and Scaling MySQL at Flickr. Follow the entire series.
- He starts of the series with Ticket Servers: Distributed Unique Primary Keys on …
OpenSQLCamp was a huge success! I took videos of most of the sessions (we only had 3 video cameras, and 4 rooms, and 2 sessions were not recorded). Unfortunately, I was busy doing administrative stuff for opensqlcamp for the opening keynote and first 15 minutes of the session organizing, and when I got to the planning board, it was already full….so I was not able to give a session.
-
- Comparing Non-Relational Databases: MongoDB, Tokyo Tyrant, CouchDB by Igal Koshevoy of Pragmaticraft
OpenSQLCamp was a huge success! Not many folks have blogged about what they learned there….if you missed it, all is not lost. We did take videos of most of the sessions (we only had 3 video cameras, and 4 rooms, and 2 sessions were not recorded).
All the videos have been processed, and I am working on uploading
them to YouTube and filling in details for the video
descriptions. Not all the videos are up right now….right now all
the lightning talks are up.
-
-
All the lightning talks belowin one continuous
video (just over 54 minutes total)
-
The Graph Engine (Antony Curtis)
- …
Following on from our earlier announcement, Paul McCullagh has responded with the answers to your questions - as well as a few I gathered from other Percona folks, and attendees of OpenSQL Camp. Thank you Paul!
What’s the "ideal" use case for the PBXT engine, and how does it compare in performance? When would I use PBXT instead of a storage engine like MyISAM, InnoDB or XtraDB?
Unfortunately it is not possible to point to a specific category of applications and say, "PBXT will be better here, so try it". PBXT is a general purpose transactional storage engine, designed to perform well on a broad range of tasks, much like InnoDB. However, PBXT's log-based architecture makes performance characteristics different to both MyISAM and InnoDB/XtraDB. Tests show that PBXT's performance is similar to InnoDB but, depending on your database designed and the application, it can be faster.
PBXT is a …
[Read more]I forwarded on a list of questions about PBXT to Paul McCullagh today. While Paul's busy answering them, I'd like to announce that Robert Dempsey (InfiniDB storage engine) and Bradley C. Kuszmaul (TokuDB storage engine) have also accepted an interview. If you have any questions about either storage engine, please post them here by Friday 20th November.
Entry posted by Morgan Tocker | No comment
Add to: …
[Read more]For the past two months, I have been running tests on TokuDB in my free time. TokuDB is a storage engine put out by Tokutek. TokuDB uses fractal tree indexes instead of B-tree indexes to improve performance, which is dramatically noticeable when dealing with large tables (over 100 million rows).
For those that like the information “above the fold”, here is a table with results from a test comparing InnoDB and TokuDB. All the steps are explained in the post below, if you want more details, but here’s the table:
Action | InnoDB | TokuDB |
---|---|---|
Importing ~40 million rows | 119 min 20.596 sec | 69 min 1.982 sec |
INSERTing again, ~80 million rows total | 5 hours 13 min 52.58 sec … |