I've gotten to get a lot of experience in this kind of thing over the last year, unfortunately.
I agree with others it could be a CPU/disk latency issue (due to the virtual hosting). Is there some way you can get disk latency numbers from the host? Maybe there are spikes.
I also agree that the query is a little weird, in specifying the limit clause and the quoting the index. The SELECT * bit I can totally understand.
I'd guess InnoDB doesn't have enough memory, but with so few rows and giving InnoDB 1 gig, that's not it.
I'd guess the query is wrong. I've seen MySQL do this kind of thing before. Some query takes too long or causes others to start to stack up. But the queries that you see taking too long are simple smaller things that should never take very long.
I have a few suggestions for you:
- Is there some sort of automated backup running that could be locking the table?
- Does this happen on any kind of regular or predictable interval?
- Have you ever been logged in and seen the full process list when this occurs?
- Does it coincide with anything specific (any time people run a certain report, etc)?
- Do you have any very large tables that could be tying up all your memory while they're working on queries, preventing this table from coming in (unlikely)?
- Has this always been the case? Did it start recently? Has the MySQL version changed? Are you able to try another build of MySQL (newer point release, Percona Performance build, etc)?
Some times looking at the full process list while this is going on can be the most helpful.
When we were running into this kind of thing last year, it was watching the process list that finally caught the real issue.