Wow. Where did the time go? It’s almost the end of September and I haven’t posted anything technical since, um, eon ago. This blog is intended to be my technical blog, sharing some of the cool SQL fun stuff that I run across or have to deal with, which by the way, I have tons of those but for some reason I have a hard time translating it into a blog post. So they are all safely written on my little spiral notebook (yes, I’m that old fashioned that I still write on spiral notebook for stuff using my pen) and none of them are out here for the public to see.
I know I need to get better on this. Share my experiences, my SQL-fun issues and resolutions, heck or maybe just regularly write about my day. But then again, I wonder who will read my blog if I just write about my day at work. Nothing really exciting compares with those awesome blog out there that I religiously read every day.
Then it suddenly hit me.
There is always someone that can get a use out of my post. That someone might just be my wonderful husband and for him to get an idea about my day before he even asks me about it, but I should not have to worry about that. I have an awesome job and I work with a great team and great managers. I have plenty to share.
As most of you already know, I manage a small DBA team at a very cool company at Seattle. Our peak season is around the holiday, mostly Thanksgiving and Christmas and apparently this year, we are about to break our own records.
So my teams focus for the next few months is only one thing. Performance tuning. Anything that we can do to improve when it comes to the web site performance is a prime candidate for a makeover. This is one chance that I can actually ask my developer team to re-write some of the code instead of just doing index tuning.
To start the process, I ran profiler for 24 hours, filtering the duration for anything that runs equal to or greater than 250ms. I used the tuning TSQL template but I also added a few columns that I think are necessary. Then I imported the trace files to an application called ClearTrace. This application is pretty awesome since it parses your trace files and aggregates them based on CPU, Reads, Writes, Duration and also calculates the averages for you. ClearTrace also parses the SQLText and only gives you the code names and gives you sample parameters if you need them for testing.
Then the fun process begins. As a DBA, I want to work on the top 50 of all those bad code strings (the ones that have long duration, high CPU, and/or high reads) but I have limited time and limited resources, so I have to work closely with my development team to understand what of each piece of code is doing, and how the code is being called, and so on and so on.
This whole process is not new to me as a Senior DBA, but it sure new to me as the person that now manages the DBA team. I now have to not only work with the development team, but also our QA team, and our PMO (Project Management Office) to coordinate the effort and cherry pick the ‘bad code’ that we are going to spend resources optimizing. My DBA side is screaming what do you mean we are leaving bad code here and not doing anything about it’ but in my current role as the one that manages the team and has to play politic nice with others, I totally understand the business decision behind it.
Our development cycle and change management process requires more resources be involved other than our own team when we modified our legacy code and as much as I feel like I can rewrite the whole list, I know that I can’t play cowgirl DBA anymore like I did years ago. I need resources from other teams and priorities have to be set, and as a result, some of the stuff will get shuffled to the bottom of the list. There’s process in place, there’s procedures, checks and balances are in place for making sure that we don’t have technical debt or hotfixes that require more hotfixes.
Another of light bulb moment for me. We DBA’s want to fix the world to be a better place our legacy database code and optimize it so it performs at lightning speed, but sometimes we have to be able to triage our code and leave the lightly injured ones alone and unattended for the moment.
Let me know if you have similar experience!