There are no bad queries…right?

I’ve worked with developers who write terrible, extremely questionable, queries. I’ve said many times over the course of my career, “That’s a bad query.” You know the saying about there not being any bad dogs, right? Only bad owners? What if that’s true for queries? What if there are no bad queries, just bad environments for queries, or bad data sets for a certain query, or a bad plan for a good query? Maybe it’s about the data/query/environment interaction more than the query itself?

As with everything SQL, I started thinking about that in the context of psychology…

Psychology tells us the individual both evokes and provokes the environment (including others in the environment) in which it finds itself (person-environment interaction). However, there is an even cooler concept (that freaks me out a bit), that we self-select environments that we are in. Meaning…we choose the shit storm we blame for our unhappiness.

Pardon me for a minute.

WHOA.

The asshole coworker? Not your fault, right?

Well, not so fast.

Let’s weave these together.

What if you have a query that runs great on a table with 10 rows? And then you move it to prod where there are 2.8 billion rows? What if it is on a laptop with 1gb of RAM allocated to SQL? What if it’s also running 85 other things just then?Bad query, or bad environment? Both is an option, too, of course. (If you said “bad dev environment,” you get a gold star!) What if you add indexes? What if you update statistics? What if you switch to columnstore? What if you put it on a grown-up server? What if you add a ton of RAM? What if you cache the table? What if you make the table in-memory? These could all be said to be environmental design to improve execution of the query because you’ve changed nothing with the query itself.

This is what happens to DBAs a lot. Queries come to us and are not able to be edited (third party software, grumpy developers, whatever). We then set about tying ourselves into knots to create an environment where that “bad query” can thrive.

People are like this, too, I feel. Sure, there are “bad” humans. Serial killers, for one come to mind. Narcissists are another. However, the vast majority of people mean to do their best. We try hard, maybe not for all the right reasons, but very rarely do most people set out to do harm to others. Some environments, some people in those environments, generate such a reaction in the individual that the literal worst comes out of them. Sometimes this means people need to remove themselves from harmful environments (or better yet, the toxic people should be removed), but other times (just like query tuning) environmental design can make a huge difference.

How can we go about improving a poor interaction? It’s the same process as for query tuning, actually. Observe. Detect patterns. Here you have two options (just like with SQL Queries):

Work backwards to find root cause, address root cause.

Or

Take a stab at what you think might help (up the RAM!), observe again, record the results. Then tweak and try again. Sometimes you make the interaction worse, sometimes better. All results inform our future choices.

I’ve recently had the opportunity to observe a couple of significant workplace behavioral issues. Where I used to get extremely upset, I’m now able to observe and say, ok, what’s the pattern here? Sometimes what I come back to is yet another concept in Psychology that we are most disgusted by traits in others that we have and hate about ourselves. Having spent a long time in therapy, and worked through a lot of cognitive distortions, when I see them in others it’s like a huge sign flashing over their heads. The interesting thing is, I will feel dislike way before it clicks why.

So, let’s bring it back to what I said earlier…we self-select our environments. If I accept a job only to find out later I clash with someone, the question I ask myself is…Why did I choose that job over others without team members with this characteristic? Then I ask, “What in me has that trait that I’m not in touch with?” Finding yourself in a person-environment interaction that triggers all your vulnerable spots should be an invitation to understand those places on a deeper level.

Sometimes fixing a bad query (or person-environment interaction) is about environmental design. You leave the bad job, you beef up your server, you defrag your indexes…whatever it takes. Sometimes it’s about rewriting the query, though. You look at how you can get more efficiency out of the TSQL and reduce I/O. Sometimes you look at your own issues and how they evoke and provoke others.

Sometimes, it’s all of the above.

When you can rewrite the query, update statistics, and add more RAM, you do.

When you are able to extract yourself from unhealthy environments AND leverage those experiences to understand why you self-selected such a situation, why you stayed in such a situation for any length of time, and what you can do in the future to handle it differently…you do. You rewrite your own damn query.

Where’d Donna go? Who is Ellis?

When I was a little girl, I desperately wanted a nickname.  Unfortunately, there’s not much you can do with “Donna.”  My dad called me DJ, but no one else did, and the fact that both my brothers had names which easily lent themselves to nicknames (as did my parents), was pretty hard for me growing up.  Don’t know why it mattered so much, but it really did. And here we are.

 

I remember as a young child (maybe 5ish?) asking for a nickname.  My mother said sure, then laughed at my suggestion (“Bubbles”) and said it was a stripper name.  Clearly, a missed opportunity to have been an early Powerpuff Girl, but whatever.  Parents do the best they can with the information they have at the time.  (In all honesty, Buttercup is really the Powerpuff Girl I’d want to be, but Bubbles is probably more accurate: “Bubbles…is seen as kind and very sweet, but she is also capable of extreme rage…”  All the yeps.) 

 

So, long story short, after the last two years of transformation getting my shit together, and also a lot of great time spent with wonderful people embracing their true selves, I had a moment of thinking, “If I were 18 and had my life to do over again, I’d totally change my name.”

Wait for it…

Keep waiting for it…

<Several weeks later…>

Umm…I’m 46. I’ve lived half my life (if I’m lucky) with a name I don’t love, that I don’t think expresses me, and isn’t nickname-able (is that a word?).  What if I thought about changing it?

See what I did there?

I sneaked up on it.

I didn’t rush right into “What if I changed it?” That’s overwhelming, scary, huge, blah, blah, blah.  I cozied up to it. For several months.  Like four.  Finally, I started casually bringing it up to people, starting with my hubby. Here’s how that went:

 Me: “So, what would you think if I changed my name?”

Hubby: “Your last name? Like go back to your maiden name?”

Me: “No, my first name…” <insert whole story of not liking my name which I’ve never told him despite knowing him for over 30 years>

Him: “Oh yeah, fine, whatever. I was just worried you didn’t want to be married anymore. What name?”

Me: “Oh, uh…I hadn’t gotten that far. No idea.”

 

Then I brought it up to my adult kids:

 

Me: “How big of a mid-life crisis would it be to change my first name?”

Adult Daughter: “You do you. What name?”

Me: “Oh…uh…I hadn’t gotten that far.  No idea.”

and

 Me: “How big of a mid-life crisis would it be to change my first name?”

Other Adult Daughter: “Cool! What name?”

Me: “Oh…uh…I hadn’t gotten that far.  No idea.”

and the one child still at home:

Me:  “How big of a mid-life crisis would it be to change my first name?”

Teenager: “Do whatever makes you happy. What name?”

Me: “Oh…uh…I hadn’t gotten that far.  No idea.”

Hmmm…

I kept talking to family and friends, and just sharing my “cozy-ing” up to the idea.  Told them I was considering it, but was taking my time.  That I hadn’t even gotten to the point of picking a name, I was still on the “Could I?” Part of this process.

As a previously divorced woman in the corporate world, I’ve changed my name a couple of times.  I’ve had email addresses which had my maiden name, some with married names, my passport didn’t match my ss card, etc., etc.  But changing my first name?  Who does that?  And also, for a reason like “Because I wanted to!” Seems like a LOT of work for something rather minor.  And believe me, it is a lot of work.  But also, we have professional personas, particularly in tech, and particularly in this era of LinkedIn, and other social media platforms.  While I’ve generally kept my full name off of my blogs, twitter, etc., and my fb is private and under my maiden name, I do that for privacy reasons (see the “previously divorced” bit…), but LinkedIn is obviously me.  When I presented at the SQL Server Users group that was as me.  

I’m about to submit a couple of abstracts for a SQL Saturday.  And (conveniently?) I’m also switching jobs right now.  I literally just mailed the paperwork for the records request (required for the motion to change my name).  So, it actually dawned on me that my name change is about to get very public, very quickly.  I need to be ok with that.  In some ways, it’s kind of a big non-event, and in others, this is completely self-indulgent.  I also need to be ok with that. :)

I’m adding Éloïse to be my first name, moving Donna to join my old middle name, and keeping my last name.  There are a lot of reasons for “adding” a name, and not “changing” my name outright…but this is the line between sharing and TMI. I will say that I picked Éloïse because it has so many amazing nickname possibilities, it is French, (and if you know me, you know I love all things French), and it has a reported meaning of “Healthy” and “Wide.”  Both kinda apply here, too! 😊  One of the first nicknames that jumped out is Ellie, which is super close to the name Ellis (who was a total bad-ass I worked with at MS many years ago), so, for the time being, Ellis is my preferred nickname.

However, as the saying goes, feel free to call me anything but late to dinner!

Rolling Back The Transaction of Trauma

One of the strange ways that SQL + Psychology has come into play in my life is through analogies that help me process things I’m going through.  One major shift happened for me when I used the analogy of “Rolling Back the Transaction” to let go of the idea that I could undo some past trauma.  Let me explain.

 

As a child, there was trauma I experienced which impacted me greatly.  That’s all the detail I’m evolved enough to share at this point.  However, the details are actually completely irrelevant.  What is important here… is that I believed that there was a version of me that never existed, but could have existed, had the trauma never happened.  That version of me had her shit together.  That version of me made better choices.  She didn’t need external validation (constantly).  She was magic and shat rainbows.  

 

I called her “Possible Me.”  I believed she could exist if only I could “undo” the damage the trauma had caused.  And thus began a campaign of fixing “Broken Me.”  I’d read any self-help book I could find…I spend tens of thousands of dollars (and a lot of years) in therapy.  

 

Currently, my extremely good therapist and I have been working through a lot of this stuff, but mostly focusing on “accepting” that I can’t undo the past.  This is a lot harder than it sounds.  Seriously.  Meanwhile, real life continues, and every day I still get up and go to my job as a database administrator.  That saying about everyone is fighting a battle you can’t see is so fucking real. You have no idea.  But I digress.

 

One day at work, we were troubleshooting a long-running, high-CPU query.  My boss and I were having the standard discussion.

 

Him: “What are our options?”

Me: “Wait for it to commit, kill/roll it back, or restart the instance (which might result in it rolling forward, then back again, so I don’t recommend this).”

Him: “Is there any way to undo it?”

Me: “Time machine.”

 

He laughed, but at that moment, the universal truth hit my gut like a ton of bricks.  My trauma was a high-cpu, long-running transaction…eating up all my resources for years.  “Undoing” the transaction was never going to happen (until that time machine gets invented – hurry up, Marty McFly!).  The sooner I (and my boss) accepted this reality, the sooner we could actually entertain the options we had.  I (up to that point) had kept looking for the magic pill (or EMDR, or talk therapy, or book, or meditation, or…), that would erase the trauma for good, so Possible, Perfect Me could come into existence.  

 

Now, in SQL, when a Tx comes from an app, we don’t have this level of flexibility I’m about to describe, but, for my trauma scenario, I had, essentially, three options:

 

Let the transaction keep running indefinitely.

Commit the transaction and move on.

Kill and Roll the transaction back, if possible, which might also be indefinite.

 

For several weeks, I actually clung to the idea that I needed to find a way to “Roll back this transaction.”  I felt like I had found the answer.

 

It also dawned on me during this period of processing this analogy, unlike in troubleshooting rogue SQL queries from an application, this was more like troubleshooting a bad sql query coming from my own laptop.  When the query is coming from SSMS on your own laptop, you can stop the query (same as kill/rollback), you could commit the transaction (assuming you used Begin Trans…)…you have the control.

 

Holy shit.

 

This was a “The call is coming from inside the house…” Kind of moment for me.

I’m the one letting the query stay running.  I’m the one letting it keep resources tied up.  All the trauma happened many years ago, is over, and now the transaction is just sitting open, waiting for who knows what.  All the table locks still in place, though.  

 

Imagine the “executing…” Down at the bottom of SSMS…and I’m sitting there going, “WHY Won’t this fucking wrap up???”  

 

Oh yeah.  No commit statement.

 

I could rollback the transaction, yes, but who knows how long that would take to complete.  As we say, possibly as long as it’s been running.  So the rest of my life.  Or I could commit it and get my resources back.

 

Holy Shit, again.

 

Unfortunately, this story doesn’t have a fantastic ending, as I’m currently in the process of figuring out what “committing the transaction” means in this scenario.  I will say, I oddly had a LOT of resistance to doing so.  First, I thought it was death to Possible Me.  Second, I ACTUALLY thought, “I’ll lose my excuse for staying small.” How fucked up is that?  But it’s a real thing.  When I commit the transaction, and get back all my resources…if I still don’t soar…the trauma wasn’t holding me back…I just wasn’t an eagle after all.  I have to be ok with that.

 

Later I had some other realizations around maybe the only path to Possible Me is through this trauma/bad query.  That the version of me who is so freaking amazing and badass and has her shit together could only exist because she went through this, figured it out, and came out the other side to share the journey.  Maybe that’s true. Maybe it isn’t.  Maybe if I had the idyllic childhood I should have, I’d have been a spoiled, racist, horrible person.  

 

Perhaps that’s part of the lesson, too.  If this bad query didn’t hog all the resources, maybe something else (maybe worse) would have resulted.  We don’t know; we can’t know.  And we need to be ok with not knowing (I’m not there, yet).