Are you running MySQL on Debian or Ubuntu with InnoDB? You might
want to disable /etc/mysql/debian-start. When you run
/etc/init.d/mysql start it runs this script, which runs
mysqlcheck, which can destroy performance.
It can happen on a server with MyISAM tables, if there are enough
tables, but it is far worse on InnoDB. There are a few reasons
why this happens -- access to open an InnoDB table is serialized
by a mutex, for one thing, and the mysqlcheck script opens all
tables. One at a time.
It's pretty easy to get into a "perfect storm" scenario. For
example, I'm working with one client right now who has a hosted
multi-tenanting application that keeps each customer in its own
database. So they have a lot of databases and a lot of tables.
And they're running on Amazon EC2 with 8G of RAM and EBS storage,
which is slower than typical directly-attached server-grade RAID
storage. Since they have a lot of tables, InnoDB uses …
[Read more]