When I speak about MySQL performance troubleshooting (or frankly
any other database), I tend to speak about four primary resources
which typically end up being a bottleneck and limiting system
performance: CPU, Memory, Disk, and Network.
It would be great if when seeing what resource is a bottleneck,
we could also easily see what queries contribute the most to its
usage and optimize or eliminate them. Unfortunately, it is not as
easy as it may seem.
First, MySQL does not really provide very good instrumentation in
those terms, and it is not easy to get information on how much
CPU usage, Disk IO, or Memory a given query caused. Second,
direct attribution is not even possible in a lot of cases. For
example, disk writes from flushing data from the InnoDB buffer
pool in the …
[Read more]