I'm sick of poor third-party software performance

  • With all the third-party software being installed and connected to SQL server, DBAs are expected to work miracles and fix these badly performing applications. I'm tired of it! Anyone else?

  • Not enough answers in the Poll... for the reasons you stated, I simply don't allow 3rd part software into my database without a full peer review for form, fit, function, and performance.

    --Jeff Moden


    RBAR is pronounced "ree-bar" and is a "Modenism" for Row-By-Agonizing-Row.
    First step towards the paradigm shift of writing Set Based code:
    ________Stop thinking about what you want to do to a ROW... think, instead, of what you want to do to a COLUMN.

    Change is inevitable... Change for the better is not.


    Helpful Links:
    How to post code problems
    How to Post Performance Problems
    Create a Tally Function (fnTally)

  • Lots of time there's nothing I can do. App vendors want to sell software, not build the best quality they can. Deals get cut above my head, I just deal with it.

    I've learned to work around some of their issues, putting up my own indexes, etc.

  • Yup. I've seen some nasty stuff from vender software. From 38 indexes in one table, with the same leading column, to 'temporary' tables that don't get dropped (we had 150000 tables after a year and we didn't know if we could drop them) to reimplementing the nested loop join in CLR.

    Jeff, I envy the position you have. Here we get absolutely no say in what products are bought (except for DBA-type tools) and have to 'make it work' regardless of what.

    Usually the database team are the last people consulted about anything, from product purchases, to server specs, to table and database design

    *sigh* Sorry, I'm ranting again

    Gail Shaw
    Microsoft Certified Master: SQL Server, MVP, M.Sc (Comp Sci)
    SQL In The Wild: Discussions on DB performance with occasional diversions into recoverability

    We walk in the dark places no others will enter
    We stand on the bridge and no one may pass
  • No, no... the rant is understood and appreciated. When I first reported to my company, they had and average of 640 deadlocks a day with spikes to 4,000, no documentation in the code, and every time the DBA went to promote some code to production, it would always fail on the first run.

    So, working with the DBA's, we ganged up on everyone... we wrote/published standards and told management how close they were to having a server meltdown... and that was no lie.

    It was a long hard battle to lock things down and get people educated (including the appdev and other managers) about the right way to write code... but it was worth it!

    --Jeff Moden


    RBAR is pronounced "ree-bar" and is a "Modenism" for Row-By-Agonizing-Row.
    First step towards the paradigm shift of writing Set Based code:
    ________Stop thinking about what you want to do to a ROW... think, instead, of what you want to do to a COLUMN.

    Change is inevitable... Change for the better is not.


    Helpful Links:
    How to post code problems
    How to Post Performance Problems
    Create a Tally Function (fnTally)

  • Jeff Moden (12/12/2007)


    No, no... the rant is understood and appreciated. When I first reported to my company, they had and average of 640 deadlocks a day with spikes to 4,000, no documentation in the code, and every time the DBA went to promote some code to production, it would always fail on the first run.

    Sounds similar to this place 2 years ago, though we just had massive performance and stability issues, not deadlocks. Through a lot of work and an upgrade to SQL 2005, we got things stable and moderatly fast. I wrote coding standards, with change management and the DBA manager instituted code reviews. offered help and advice to developers, etc

    For a while, things were fine, but recently we've been backsliding, and IT's reputation is going downhill, along with the quality of the solutions we're putting out.

    In theory, I'm supposed to approve any code going into production. In reality, if I say it's not up to standard and is likely to cause problems, I get overridden by management 3+ levels above me. <sarcasm> After all, we can aways fix it later, right? </sarcasm>

    It was a long hard battle to lock things down and get people educated (including the appdev and other managers) about the right way to write code... but it was worth it!

    I'm tired of fighting now. Every week its the same battle. Every time we have an incident, the same things come up in the post-mortem, but nothing ever changes.

    We've got no data architects. We've got two application architects who were promoted to that position from development. They've got no architect training, though they are trying very hard to learn. The developers often design the tables without any input. There's no technical managment in the developer area. The PMs promise dates without consulting anyone, then push to make those dates regardless.

    I usually find out about new development when it's too late to change the table design (once development is complete usually, sometimes a day before deployment)

    Think I'm going to go and have a nice long chat with my boss now.

    Gail Shaw
    Microsoft Certified Master: SQL Server, MVP, M.Sc (Comp Sci)
    SQL In The Wild: Discussions on DB performance with occasional diversions into recoverability

    We walk in the dark places no others will enter
    We stand on the bridge and no one may pass
  • What other answers would you put in there, Jeff? Thanks.

  • GilaMonster (12/12/2007)


    Yup. I've seen some nasty stuff from vender software. From 38 indexes in one table, with the same leading column, to 'temporary' tables that don't get dropped (we had 150000 tables after a year and we didn't know if we could drop them) to reimplementing the nested loop join in CLR.

    Jeff, I envy the position you have. Here we get absolutely no say in what products are bought (except for DBA-type tools) and have to 'make it work' regardless of what.

    Usually the database team are the last people consulted about anything, from product purchases, to server specs, to table and database design

    *sigh* Sorry, I'm ranting again

    Oh I hear that - I knew I was in trouble when I actually got the "lead developer" of one of these gems to go look up "normalization". There have been times where I've found myself "isolating" them 3rd party products, and starting to cut off its various features to replace them with ones I've written that will actually work without killing a dedicated server.

    It's amazing how much better their code gets when they figure out that you're about to create your OWN improved version of their POS product (and no - that doesn't stand for "point of sale").

    ----------------------------------------------------------------------------------
    Your lack of planning does not constitute an emergency on my part...unless you're my manager...or a director and above...or a really loud-spoken end-user..All right - what was my emergency again?

  • What other answers would you put in there, Jeff? Thanks.

    Heh... Like what? There's no magic fix, no instant answers to such problems and all of the fixes take time, extreme knowledge, and a whole lot of determination... sometimes, it takes a hell of a lot of risk on your part if you believe in either the company or the people you work for.

    Unless you can show management the ROI of doing things more wisely, it will continue to be a problem... the big problem is that management frequently knows the cost of everything and the value of nothing. Sometimes, it simply takes a server meltdown and someone with the nads to step up and say "I know how to fix that" and then do it.

    For those who've gotten tired of "the fight", I feel for ya and I've almost (but not quite) been there. Sometimes, management borders on the fringes of absolute ignorance about quality code and it's tempting to just give up. You either have to "re-muster the fight" in you, leave, or be satisfied with being a code drone. I've never done the 3rd and never will, although I have learned which battles to fight and when to leave. Remember that the managment you may be fighting against also have bosses they must answer to. Let them do their job and you do yours... help them if you can.

    It doesn't have to be a "fight" so much as recognizing or even seeking out an "opportunity"... sometimes you can just educate folks in management by saying/doing something like "We had this one 30 minute run that sometimes fails that I thought could be reworked... I worked on it after hours, got it down to 6 seconds, and I can't make it fail. I think I know a couple of other places where we might make similar improvements." You'll need to demo what you've done and prove that it produces the same correct results reliably... after a couple/three of those small wins, they'll actually start to believe it. Be prepared to demo a big win right after that and be prepared to defend yourself against "nay-sayers" without being arrogant or defensive. Stick to the facts only and make sure the "facts" are right. And never ever bad mouth other folks' code... always make it a "mentoring/helpful/cheerful" experience. "I think there may be other similar opportunities for improvement" usually works a lot better than "This is crap code and it needs to be fixed NOW!"

    Here's another huge point... once you've gained some respect as a "goto" person, if you're not willing to coach others and "let people see it your way", you're doomed to "drone-dum". If you're not willing to stop what you're doing to help someone else, don't expect the same in return from either your peers or managment.

    Also, it's ok, maybe even a requirement, to be confident... but the first sign of arrogance on your part will kill managment's opinion of you and, just like the fastest gun in the West, will invite every nay-sayer there is to challenge you. Build your own authority by being politely correct in everything you say and do. If you don't know something, say so... and then tell them what you're going to do to change that. That will also earn you a huge amount of respect and surprising numbers of allies that will bust a hump for you.

    Above all else, remember that your only job is to make the people you work for look good (sometimes, despite themselves). Contrary to popular belief, that's all you were hired for.

    That's probably more than you guys wanted to hear, though, huh? 😛 But that's precisely what I've done to be successful. Speaking of success... Napoleon Hill wrote a book called the "Law of Success"... the nineth "lesson" in that book teaches "The Habit of Doing More than Paid For" and it's a darned good habit to get into... I know it works for me 'cause I've noticed that I don't have to "fight" as much as most. 😀

    And for all of those who have grown weary of the "fight"...

    "If you have tried and met with defeat; if you have planned and watched your plans as they were crushed before your eyes; just remember that the greatest [people] in all history were the products of courage, and courage, you know, is born in the cradle of adversity." --Napoleon Hill

    ... be great.

    --Jeff Moden


    RBAR is pronounced "ree-bar" and is a "Modenism" for Row-By-Agonizing-Row.
    First step towards the paradigm shift of writing Set Based code:
    ________Stop thinking about what you want to do to a ROW... think, instead, of what you want to do to a COLUMN.

    Change is inevitable... Change for the better is not.


    Helpful Links:
    How to post code problems
    How to Post Performance Problems
    Create a Tally Function (fnTally)

  • Hear Hear, Jeff!

    And to add another catch phrase ... "You catch more flies with honey than with vinegar" 😀

    ______________________________________________________________________

    Personal Motto: Why push the envelope when you can just open it?

    If you follow the direction given HERE[/url] you'll likely increase the number and quality of responses you get to your question.

    Jason L. Selburg
  • Jeff, may I send that to my boss?

    I've got a meeting with my boss on Monday. Will see what comes out of it. If it's OK, I'll drop you a PM later with some thoughts and details. I don't want to take too much about my company here. A number of my colleagues read this site (at my urging)

    Gail Shaw
    Microsoft Certified Master: SQL Server, MVP, M.Sc (Comp Sci)
    SQL In The Wild: Discussions on DB performance with occasional diversions into recoverability

    We walk in the dark places no others will enter
    We stand on the bridge and no one may pass
  • I have to reply to this post. Yes, I am tired of poorly built 3rd party applications too. For years our IT department didn't have any say in the purchase of software. Now, we are starting to get control but in the mean time are stuck with some bad stuff. Some products not only have poor architecture, but poor code and poor security. The sad thing is that the users and management blame SQL Server and expect me to work magic. Sorry, but a toad will always be a toad 🙂

  • Jeff, may I send that to my boss?

    Sure... in fact, I'm honored :blush:. But, I would be very careful and I'd possibly do a bit of editing... the term "boss" indicates some form of "management" and they don't take too kindly to being sucker punched with such words as "knows the cost of everything and the value of nothing" or "management borders on the fringes of absolute ignorance". You have to have a very special, frank, and highly trusted/earned relationship with your bosses where they value what you think and do much more highly than your occasional conversational indescretion...

    ... be careful, Gail... such words can put you in the soup line literally overnight.

    --Jeff Moden


    RBAR is pronounced "ree-bar" and is a "Modenism" for Row-By-Agonizing-Row.
    First step towards the paradigm shift of writing Set Based code:
    ________Stop thinking about what you want to do to a ROW... think, instead, of what you want to do to a COLUMN.

    Change is inevitable... Change for the better is not.


    Helpful Links:
    How to post code problems
    How to Post Performance Problems
    Create a Tally Function (fnTally)

  • Linda Johanning (12/13/2007)


    I have to reply to this post. Yes, I am tired of poorly built 3rd party applications too. For years our IT department didn't have any say in the purchase of software. Now, we are starting to get control but in the mean time are stuck with some bad stuff. Some products not only have poor architecture, but poor code and poor security. The sad thing is that the users and management blame SQL Server and expect me to work magic. Sorry, but a toad will always be a toad 🙂

    Ah! I have such products in-house, as well. And, strangely enough, they form a source of unity in our group much as a "common enemy" will cause usually disparate groups to unite in a time of war. They also provide a tremendous source of "opportunity to shine" especially if their code is "open source" like it typically is in SQL Server. Matt Miller hit the nail on the head in his message above where he said...

    "There have been times where I've found myself "isolating" them 3rd party products, and starting to cut off its various features to replace them with ones I've written that will actually work without killing a dedicated server."

    What an incredible opportunity. Think of it this way... it's impossible to show your worth by correcting a blank piece of paper. Now, that would truly be magic if you could.

    Embrace the challenge... start telling managment how you improved the 3rd party software... start getting them used to the idea that you and your team can do better than that and that they'll no longer be held-up at gunpoint by the 3rd party vendor when a change or new feature must be added. After several successes like that, they'll start coming to you and your group for good solutions instead of buying untested, performance challenged 3rd party crap. But, ya gotta trick 'em... you have to "Let them see it your way"... if you try to force them, they'll dig in. And, you have to be really, really careful... that "3rd party POS", as Matt called it, may have been the "brain-child purchase" of that management... you may be dealing with more ego than you know. 😉

    --Jeff Moden


    RBAR is pronounced "ree-bar" and is a "Modenism" for Row-By-Agonizing-Row.
    First step towards the paradigm shift of writing Set Based code:
    ________Stop thinking about what you want to do to a ROW... think, instead, of what you want to do to a COLUMN.

    Change is inevitable... Change for the better is not.


    Helpful Links:
    How to post code problems
    How to Post Performance Problems
    Create a Tally Function (fnTally)

  • Jeff Moden (12/13/2007)


    And, you have to be really, really careful... that "3rd party POS", as Matt called it, may have been the "brain-child purchase" of that management... you may be dealing with more ego than you know. 😉

    Or in my case, they were in bed with the developer. As in - LITERALLY in bed with the developer (and no - I don't know what happened first - the business relationship or the romantic/sexual one)....Now there's a lesson in diplomacy if I've ever had one......:unsure:

    Nothing quite like having a developer "with benefits"....:w00t:

    ----------------------------------------------------------------------------------
    Your lack of planning does not constitute an emergency on my part...unless you're my manager...or a director and above...or a really loud-spoken end-user..All right - what was my emergency again?

Viewing 15 posts - 1 through 15 (of 23 total)

You must be logged in to reply to this topic. Login to reply