This is as much about the code in front of the database as the database
itself. You'll want to use an architecture that supports pooled
connections (java, php under lighttpd, etc...) and you'll want to look
Well, anybody who uses PHP and cares about performance is already using
lighttpd, no ?
MySQL and PostgreSQL can handle fairly heavy parallel loads.
I'll only speak about MyISAM. MySQL == MyISAM. InnoDB is useless : if you
want transactions, use postgres.
If you say to yourself "oh yeah, but it would be cool to use a MyISAM
table for stuff like hit counters etc"... Is it the job of a SQL database
to count hits on the root page of your site ? No. To store user sessions ?
No. The job of a SQL database is to efficiently handle data, not to do
something that should stay in RAM in the application server process, or at
worst, in a memcached record.
MySQL + MyISAM has a huge advantage : it can look up data in the index
without touching the tables.
MySQL handles parallel SELECTs very well.
However, throw in some maintenance operation which involves a long query
with writes (like a big joined UPDATE) and all access to your website is
blocked while the query lasts.
This is worsened by the fact that MySQL sucks at complex queries.
If all of your updates are done to a few rows, MyISAM is cool, but
someday you'll want to do this query which locks a table during one
minute... and then you got a problem.
Just be very clear about what you want to do, what types of queries
you'll want to run in two years... etc.