Let's work the problem, people. Let's not make things worse by guessin'.
—Eugene F. Kranz1
The first thing to do when an application experiences performance problems is obvious: identify the root cause of the problem. Unfortunately, all too often this is where the real trouble starts. In a typical scenario where everyone is looking for the source of a performance problem, developers blame the database for poor performance, and the database administrators blame both the developers for misusing the database and the storage subsystem administrators because their very expensive piece of hardware ought to provide much better performance. And as the complexity of the application and infrastructure supporting it increases, so does ...