Thursday, July 19, 2012

Performance

Performance.  A word that's strong enough to strike fear into anybody dealing with an Oracle database system.  That's not to say that Oracle performs badly, but that seldom do people and organizations understand how to get the best performance out of the system they have put into place.  A DBA will tell you performance is one thing, with a certain way to measure it, a developer will look at performance in a totally different way with completely different tools to understand it, while your production support team will tell you they are looking for yet another set of metrics to be able to anticipate performance (or a lack of) from the system.

This complexity is why I consider performance to be one of my Main Tenants of Support, as typically the amount of performance can be boiled down to this simple formula:

Actual system performance capacity = User expectations - lack of development performance planning + amount of DBA hands on assistance + framework for performance measurement

So.  What can we do about this?  Obviously for somebody in the production support team the only piece you usually can directly affect is your user expectations, while getting outputs from the framework you have to measure your system performance, but this only goes so far.  Performance needs to be an institutional truism that gets baked into your system to address the other 3 parts of the equation:
  • Developers need to understand how both the system and users operate in order to effectively design and produce results.
  • DBAs should be understanding that reactively doing something like reading through the DB log after "something happens" is far too late in the game.
  • Support has to make sure they participate in the feedback loop about what the system (or users) are doing and fight to get their hands on a performance framework, or create their own measurement system.
Yes, I'm THAT guy.  The one that believes we can start to change our patterns of behavior so we stop repeating the same mistakes we've made time and time again.  If we know that writing to a table before a user opens a form takes x milliseconds, but realize that thousands of people are opening the table every day, and the table growth will almost be exponential based on your system growth, you'll have a potential hazard introduced into the ecosystem which HAS to have a way to be able to get ferreted out in production.  Subpar development outputs, combined with subpar performance measurement, combined with a subpar maintained Oracle system is a recipe for disaster.

Why should we care about performance?  Nobody should want your system to operate below maximum, right?  So why do we allow it to happen on a daily basis?!?  I'll tell you, listening to a presentation from Cary Millsap about being able to measure everything your system is doing makes SO much sense sitting there; yet being able to implement a new system, or break out of your norms, all on your own is pretty much impossible.  Performance is a grassroots revolution which we all need to enroll in.

No comments:

Post a Comment