Blog Post

How my SQL Server trainings helped Hannes and his company to improve their SQL Server based software

,

In the last months I have done a lot of SQL Server consulting engagements where I

have seen the craziest performance problems and learned how to solve them effectively.

Sometimes these problems occurred because of misconfigured hardware (mostly because

of I/O subsystems), but almost every problem also had some source in the development,

maybe a developer hasn't tested his/her code against a production workload, maybe

the developers haven't thought carefully about indexing strategies or even locking

and blocking scenarios with concurrent users.

Because I have a strong background in development in combination with SQL Server I

know exactly WHERE and WHY those problems are introduced. The short answer is very

simple: for developers SQL Server is just a simple black box: you feed SQL Server

with a query, and sometime later SQL Server returns you

the result of the query. The key word here is sometime:

sometimes it takes a few milliseconds to execute a query, sometimes it takes a few

seconds or even minutes to execute the same query! For me, SQL Server was also a big

black box for several years. I didn't have understood the inner workings of SQL Server,

but I was able to write SQL Server based applications, because the tool support that

Microsoft provides for developers is just amazing. But that's only the half of the

truth. There is more that you HAVE to know about SQL Server, so that you are able

to write better, scalable, and great performing SQL Server based applications.

For that reason I'm also offering custom SQL Server trainings, where I'm showing developers

(and also DBAs) how SQL Server really works, and what are the pitfalls when you are

working and developing with SQL Server. I have done such a training for HiCo (see http://www.hico.com)

in Austria. They are developing and selling a large .NET application that is based

on SQL Server, and in the last months they wanted to improve the performance and scalability

of their application, so we have organized a 5-days long training where we went through

all the most important core concepts of the relational engine of SQL Server, and how

you can troubleshoot them, when you experience serious performance problems.

But by now I want to stop writing, because I few days ago I had the chance to meet

again with Hannes – one of the Senior Software Developers of HiCo – who attended the

training. We had a little chat about the training, and how it helped him and his company

to improve their SQL Server know how, and how they can now relate this know how when

they develop new features for their software. Here are some of the questions that

I have asked Hannes, along with his answers.

In which area your company is using SQL Server, and what was your background

on it, before you attended the training?

Our usage of SQL Server is primary as a repository for storing structured documents

(XML, SGML), in our application. Our application uses current technology like WCF

(Windows Communication Foundation) and WPF (Windows Presentation Foundation) and supports

a large number of users and workflows to create technical publications, according

to standards like S1000D (see http://en.wikipedia.org/wiki/S1000D).

It's a requirement of our customers to support the Oracle database engine too, so

we use nHibernate as an O/R-Mapper. Our initial background on SQL Server was "install

it and use it to store our data". We did not care about internal mechanism of SQL

Server – in fact we used it as a "black box to store data".

How would you rate your knowledge about SQL Server after attending the

training?

The training gave us a "different look" at SQL Server. After the training it is

no longer a "black box" for us.

Why your company has chosen to take an advanced SQL Server training?

We wanted to gain knowledge about how to make performance optimizations and how

to solve "database problems" – to be more specific: we had some serious locking problems

in our application.

Was it worth enough for you and your company to attend the SQL Server

training?

For me, as a developer, it was more than worth enough, because I gained a deeper

understanding and know "where to start searching", if I encounter problems according

to the database. Four our company – as far as I can tell – it was worth too. Our mission

is to provide high quality software for our customers and this naturally includes

great performance and responsiveness of our applications. Since the database has a

great impact on performance, it is important for us to be able to solve performance

issues and locking problems.

What was the biggest "wow" effect you had during the training?

This in fact – for me - was something, not related to "performance or locking

problems". It was, how important it is to set up a stable backup strategy and what

happens, if you set up no backup strategy at all, because that IS, what you do when

you use SQL Server as a "repository to store my data" and that's all you care about.

Another very interesting point was the internal handling of indexes and what you should

not do, when you want to "optimize" database indexes.

How often you had in your day-to-day work referred back to the provided

training material and the notes you have taken during the course?

Because Klaus gave us his training materials, we are able to review them whenever

required. Since the training, I did not required to review the training materials,

but I know where to look, when I have to. The training definitely had influence on

how I design database tables now. In contrast to designing tables before the training,

I no longer use VARCHAR(MAX) columns for fields, that store a maximum of 500 bytes J

Which module was the one, that helped you the most in your day-2-day work?

The reason why we took the SQL server training, as already mentioned, was because

we encountered locking and performance problems. The recipes how to solve these problems

helped us most in our day to day work.

Would you recommend the training to other .NET/SQL Server professionals,

and if yes, why?

I would definitely recommend the training to all developers that use SQL Server

in their applications. It changes your point of view from "something to store my data

in" to "I know how my table design affects performance" and now I can read and understand

execution plans, and know how to do troubleshooting with them.

What do you want to tell other blog readers about the training?

If you use SQL Server in your applications – this is the course you have to take J

Wow, that sounds pretty good! Hannes and his co-workers really have enjoyed my SQL

Server training, and they have learned a lot that they can now use in their day-2-day

job. If you also want to have the experience that Hannes has enjoyed, I'm providing

my "Advanced SQL Server Performance Troubleshooting Workshop" to you, starting with

September across Europe. See http://www.csharp.at/events.html for

further information.

This workshop is a "compact" 3-days long advanced training about serious performance

problems/bottlenecks that you WILL encounter in your SQL Server production systems.

We will have a look on how to find and identify those problems, and – of course –

how to solve them. I'm currently providing the public course training in Austria and

UK, but other countries like Switzerland, Germany, Norway, etc. are already in my

pipeline.

If you are not able to attend the training, because of time constraints or other reasons,

you can also drop me an email,

so that we can arrange a customized in-house SQL Server training for your company.

Thanks

-Klaus

Rate

You rated this post out of 5. Change rating

Share

Share

Rate

You rated this post out of 5. Change rating