Ok a few days ago I started a blog case study (I need to come up with some cool name for that), I am still working with that client, and yes I am working over the long weekend. I talked at length today with New Client number 2 and it has really opened my eyes in a couple of ways. Client 2 is the client that motivated me to write the best practices blog that I did yesterday, and again today.
So here is the situation, this client does a lot of work with automation software. They build software that will keep an eye on your assembly line, if they see a problem they can take care of it. They know where the problem has started and they know where the downstream affects are going to be. I find this so cool, I am watching the software work and it is just amazing at well this is built. For those of you who have heard me speak before at a conference or online at www.VconferenceOnline.com you may know that I take a pretty hard line on looking at third party built software. I can tell you from the looks of this product this has got to be the best one I have seen yet.
So imagine this, and no this is not a real case either… You have a conveyer belt all along this belt there are hundreds of eyes that watch a package, let’s say it’s for a shipping company. As a package passes a sensor the package needs to have the belt route it to the right part of the warehouse to where the truck or the plane may be to take it to the next step. If a package is going on a truck then it just rolls right up to the truck, but if it goes on a plane it has to be weighed, stamped and may even have to sit in customs. Like I said this is not a real case, just an example, so don’t be to hard on me if I don’t get the process just right. Point is along this line there are decisions that have to be made. These sensors will pick up a number on the box and then tell it where it needs to go next.
Now lets look at the database side of this. There are a number of things that are going on, first there is the reads, and a lot of them, every sensor is going to have to read where a package is it will have to decide if it needs to go one way or another. It will also have an update attached to it, maybe even an insert depending on the design on the database. The update is going to tell you what steps the package has completed.
Here is what I thought was the coolest thing about this. I am watching the processors on this SQL Server that is answering requests, the belt is going full speed and there is a lot of packages that are being moved around. But since the software is designed to control the work flow and the speed of how fast everything moves around the flow is pretty consistent. As I watch the processors the load stays pretty constant. There was very few times when I was watching this that I saw it adjust more then 5% in either direction. I have never seen a SQL Server that is under load behaving like this. It was a straight line all the way across the performance monitor. I just have to say Kudos for the company, what a well designed system.