I'm working on a social website with an approximate read/write split of 90/10. Trying to decide on a MySQL engine. The ones I'm interested in are:
- XtraDB
- PBXT
- TokuDB
What are the pros and cons of them for my use case?
A few specific questions:
PBXT uses log-based structure that avoids double-writes. It sounds very elegant, but the benchmark I've seen doesn't show any/much advantages over XtraDB. Do you have any experience with PBXT/XtraDB you can share?
TokuDB sounds VERY interesting. But all the benchmarks I've seen are about single-threaded bulk inserts - inserting 100M rows for example. that's not very relevant for OLTP. What about its performance with large number of concurrent threads writing and reading at the same time running on multiple cores? Anyone has tried that?
Re: PBXT vs XtraDB (InnoDB)
I phrased that question to Paul McCullagh directly. You can read his response here:
http://www.mysqlperformanceblog.com/2009/11/20/paul-mccullagh-answers-your-questions-about-pbxt/
To paraphrase: PBXT is a generic OLTP engine, so it does overlap considerably with InnoDB. Most of the direct 'better use cases' are not known yet.
Re: TokuDB vs XtraDB (InnoDB)
I think these are a little different. While TokuDB does have some properties that may be good for OLTP where it really shines is:
a) When you're dealing with so much data, that your inserts slow down from your indexes no longer fitting in memory (a 'classic' B-Tree problem for which TokuDB does not suffer).
b) When you need to have a lot of adhoc indexes on data.
Vadim talks about this here: http://www.mysqlperformanceblog.com/2009/04/28/detailed-review-of-tokutek-storage-engine/
--
From your description I'm going to maybe make an assumption and say that XtraDB and PBXT are the most obvious choices. Both will work. In XtraDB's favor is that it's been around for longer.
(Disclaimer: I work for Percona, authors of XtraDB).