• Worst performance problem:

    Developers not understanding transaction isolation levels.

    My specific worst performance problem: Developers not understanding what is going on behind the scenes of a 5th GL that was used to write several applications. An upgrade of one of these applications caused the first read (or query but they were always reads before updates later) executed to start an implicit transaction in serializable isolation mode. This was a little detrimental to performance. A user would run an report or just a view to look at something and lock everything in it's path, then would go on to do other things and continue locking until they eventually did an update which released the locks -- until it all started over again. System was brought to it's knees -- actually it was laid flat out. The software change was tested in depth with one user doing all the testing sequentially. No load testing at all. No verifying what the software was doing under the covers with transactions.