Archives for MySQL

Performance tuning a server in less than three minutes while being slashdotted

Burning ComputerTuning a webserver in three minutes while it’s being slashdotted.

Sun buys MySQL

So Sun has splurged some $800 million in cash and taken up $200 million in options to purchase MySQL AB. It’s somewhat of an odd move really. I mean, Sun’s got a decent reputation for open source stuff (not always linux-friendly, but “open source” does not mean “linux” after all). Java is now GPL’d, openSolaris as well, there’s code finding its way from Sun to Linux at a kernel level, and there are other examples. But MySQL?

About the only thing that comes to mind right now is that we might see a push from Sun in the coming years away from the standard LAMP stack and towards OTMS/STMJ stacks (Opensolaris/Tomcat/MySQL/Servlet or Solaris/Tomcat/MySQL/JSP or some suitable combination) so we’d have a Sun-friendly stack looking for a piece of LAMP’s market share.

It hardly seems logical. PHP versus Servlet/JSP isn’t a sensible comparison. If you look at development time, PHP is so far ahead of JSP/Servlets that it’s not even a competition any more; and likewise if you look at runtimes, PHP is so far behind that it’s just not fair. There’s just no room for a particular stack to get itself chosen over the other if it’s not suitable. But then, that’s what a huge marketing department is for, right?

 … Read the rest

Mechanism, not Policy

Over on Diamond Notes, a somewhat skeptical take on the recent Postgres benchmarks news. Can’t say I agree with it, and I did comment on it, but something did go click for me while thinking about it, hence this entry. See, the problem isn’t just performance. MySQL just doesn’t do the right thing.

I mean, I can understand the principle of implementing the smallest featureset you think a user would need and then optimising the bejaysus out of it – Epiphany would be a better browser than Firefox for 90% of the time for me because of that approach (it’s just Epiphany’s way of doing bookmarks that gets in the way) because Epiphany is always faster and less of a memory hog than Firefox since it doesn’t try to do everything. Emacs and vi is another example – sure emacs can do just about anything, but vi starts in a heartbeat and if you just want to add one line to your .muttrc/aliases, there’s not much point in firing up emacs. Of course, if you’re doing a chunk of work… but that’s another story.

The point was, before the digression, while MySQL was faster than Postgres in previous benchmarks, it wasn’t doing the job right. Sure, it was faster… but only if you wrote your SQL the MySQL way. Don’t use JOINs because MySQL doesn’t do those well. Yes, I know, there are better ways to do things than JOINs (and if you grok set theory, easier ways), but forcing end users to write SQL a certain way – and punishment with poor performance is forcing them – is the same as putting policy in the kernel. It violates one of the core tenets of unix kernel philosophy: Mechanism, not Policy.

There was also the point that MySQL didn’t … Read the rest

Postgres performance

For a long time now, most who’ve used both have felt that Postgres was a better database than MySQL, myself included. But until now, the stick that MySQL keep beating Postgres over the head with was performance. MySQL might be a toy database (okay, it’s moving away from that these days, but only in the last few versions and that’s not really enough dev time to be stable enough for critical stuff), but it was fast on cheap hardware, and for pragmatic web development, that meant it beat out Postgres every day of the week.

Not any more

Basicly, for the first time in a seriouly major benchmark, postgres not only outperformed mysql, but it nearly matched oracle (which was running on hardware that cost more than twice as much).

There’s also this earlier post, which basicly showed that Mysql on a single-CPU machine starts off faster than Postgres, but falls off as the number of concurrent users
rises, until it’s way behind postgres, which remains pretty invariant as the number of users rises. It also shows that postgres takes advantage of multiple CPUs better than MySQL does (up to 16 CPUs anyway, where the postgres team say they still have work to do).

Something to think about. Do you expect to ever have more than one or two users on your site? Better start with postgres so, and save yourself the cost and hassle of a later switch (I don’t care how good your database abstraction layer is, no DAL is so good that you don’t have to change your app when you switch database. Maybe more on that later.)

 … Read the rest