Postgres kernel regressions

While Mark was looking at MongoDB, I was playing comparing various aspects of MySQL and Postgres performance. Certain PG performance numbers I saw (40kqps vs 110kqps from MySQL) made me really upset, so I ended up discussing with people at #postgresql – and started comparing various versions/configurations/machines/etc.

Apparently 2.6.32 kernel, which is in Ubuntu 10.04 LTS (Lucid Lynx) and is also basis for future RHEL6 kernel has nearly 20% performance degradation for PG (though not for MySQL, phew) – and apparently it was news to their community (I have started an email thread, will see where it goes).

Warning: there’re quotes that has been deliberately taken out of context for more snark

While I was doing my research, of course I could observe plenty of gems of wisdom:

<davidfetter> domas, well, as tom lane once said, there’s no limit to how quickly you can get an answer if it doesn’t have to be correct

And an hour later:

<rawtaz> are you one of those mysql lovers?

<dim> nobody wants performance at the price of correctness, right?
<dim> as Tom said, I can be as quick as you want as providing an answer if you don’t want it to be correct (hint: 42.)

Apparently chasing these performance variations is…

<Snow-Man> tbh, I’m of the opinion that we’re losing the forest for the trees.

Can’t say that all of them were encouraging:

<sterncera> If you can’t be bothered to subscribe to -hackers, maybe you shouldn’t be mailing it

Special thanks goes to mastermind, who not only didn’t lose his temper, but stayed focused on the topic and resisted my trolling :-) I really want PG to be greatly performing database (and I’ve seen some great numbers from it), but the amazing amount of ignorance and animosity they have against MySQL makes it somewhat complicated there though :(

P.S. Now all benchmarks I did are tainted and will need full rerun…

6 thoughts on “Postgres kernel regressions”

  1. MySQL doesn’t have transactions. MySQL is slow. Ack, new data is disturbing my reality. Must stop Domas.

    For what it is worth, Dimitri got a similar response after a similar result.

  2. Well to stay fair, Domas had a valid point and there was a lot of productive discussion as well (just citing a few comments out of context is only half of the story) which some comments on both sides maybe being a bit too much (heck even Domas admits that he was a trolling a bit ;)). Not sure what benchmark you are refering to from dimitri – I recall a few things from him all leading to intense discussions on the lists but I would be interested which one specifically you are refering to?

  3. Hey Domas,

    Sorry about the ‘tude on the channel. There are some awesome, knowledgeable folks in there, but it’s huge, chaotic and full of unnecessary sarcasm. FWIW, PostgreSQL developer culture centers around the pgsql-hackers mailing list, and not many of the committers hang out consistently or at all on IRC. Thanks for persevering and trying out the mailing list.

    I’d love to get some folks together to talk about database code. Brian Aker and I have talked about having a developer conference (not an unconference) that brings together the core open source database developers to talk about issues like performance, replication and how we implement those things with each other in a focused way. Maybe Facebook + Rackspace + ? could help support such a gathering?

    The first step in adjusting the community attitude is having the developers know one another a bit better. The next step would be having substantive conversations about code that cross project boundaries.


    1. dimitri’s benchmark was not apples to apples — it made heavy use of the char() type which is a bugaboo because postgres follows the standard here, mysql does not.

      1. If I remember well, I’ve tested VARCHAR on that time too (at the end, just for my curiosity), and it did not help either..

        But probably it’s a time to replay the same tests with the newest PG 9.0.. – 1,5 years is too far from now ;-))


Comments are closed.

%d bloggers like this: