My MySQL Top 5 Wishlist

OK. First off. I broke the rules. There are actually seven here.

I figure Marten, Jay and Stewart can’t be wrong.

… so here it goes.

* Smarter InnoDB checkpointing. The fuzzy checkpointing seems less than ideal. I think you could just fill up memory with data pool modifications and then checkpoint every 3-5 minutes or so writing the entire DB out to disk in one head pass. You’d be able to fully saturate the disks in this manner. Granted faster is better but our 100MBps drives only see 15-30MBps in practice.

You’d need copy on write semantics though so if you’re seeing full throughput to the disk you could really only fill memory 50% or so…

* gzip support

Right now COMPRESS and UNCOMPRESS only support zlib format. Unfortunately, this means you can’t use gzip’d data and send it directly to the client.

Oddly enough the gzip library is supported within zlib so it would be easy to implement and ship in MySQL.

You’d then be able to assemble a full gzip stream out of content in the database. This is possible since gzip is smart enough to decode multiple independent streams sent back to back (read the RFC if you don’t believe me).

* 5.1 released. Seriously. I need partitioning support and it isn’t stable. I’m also unable to reliably reproduce the crash bugs we’re having.

* Base64 encode/decode functions including +filesafe support. There are procedures available for this but I think these functions need to be in the core.

* SANE date/time support. I’m not going to hold my breath for this one though.

* Internal MySQL malloc replaced with tcmalloc. I’m not sure we’ve seen this bottleneck in production but it seems inevitable.

* Google MySQL patches integrated into MySQL 5.2 or 5.1

  1. b1ff

    About gzip support: gzip is pretty much just a deflate stream (“zlib format”) with an extra header and a footer with the size and CRC of the uncompressed data (which you can save beforehand in columns for that), so it shouldn’t be too hard to do manually. AFAIK deflate streams can be concatenated just like gzip streams (but of course they won’t share dictionary history so it won’t compress as well). BTW, you can send deflate streams directly to the browser too anyway.

  2. b1ff:

    Hm……. Interesting about the deflate stream….. I was only 50/50 on this and I haven’t checked…….. I’ll check now actually.

    Also….. one reason against gzip is the patent issue. I’m pretty sure gzip uses arithmetic coding which I think IBM still holds patents on (ug).


  3. One other note.. we’ve had other problems with the zlib implementation in MySQL … it’s not compatible with two zlib implementations in Java.

    I’m still trying to grok why. I need to figure out how to get a zlib stream via unix command and then test that with my java libs.

  4. There have been some linux vm changes talked about recently on lkml that make Linux behave much better with the malloc()/free() patterns that mysqld does. We should probably further look at how we can use the ideas in tcmalloc inside the server too, as no doubt this could help us further improve memory usage/allocation.

%d bloggers like this: