As I promised yesterday I’m gonna talk about process and coding standards today and I want you to really think about what I’m saying here because it’s what separates the men from the boys.
This topic won’t ramble on quite as much as the past 2 days have though so don’t worry. Basically what I want to say is that you should definitely be creating coding standards and following them, but don’t rest there and don’t allow any of your standards to rest either. What I mean by that is just because you come up with a standard, say using ‘insert into’ instead of ‘select into’ during your ETL loads, don’t always blindly follow that standard. Every process is unique and every process deserves consideration. You can adversely effect your servers if you do the same thing across the board without ever questioning whether this is the right tool for this particular job or not. So where a ‘select into’ may be the perfect solution for one really huge snapshot load, an ‘insert into’ may be the right solution for other lesser loads.
One argument I hear a lot when preaching this bit of DB wisdom is that you want to have a solid way of doing things and you want to standardize. And frankly, that’s just ridiculous. That argument doesn’t hold up to even the most basic scrutiny. Ok, maybe ridiculous isn’t the word… let’s go with asinine instead. So you’re telling me that for this big snapshot load you should use the exact same process as you do for your smaller ones because standardization is the key? Then why aren’t all of your loads full snapshots? Shouldn’t you be standardizing on a single load process? And what about your indexes? Do you have the exact same fill factor for every single index in your place? If so you’re not paying attention to your index stats. And are you using #table instead of @table absolutely everywhere? Or are there cases where one is better than the other?
So you see, with just a few examples I’ve shown you that you don’t do EVERYTHING the same way in your DBs. So there’s no reason for you to scream standardization with something as important as a data load. Take each load on an individual basis and decide what the best course of action is for each one. And yeah, as the data grows or changes in nature you may end up revisiting your process and updating it to reflect the new nature of your objects. And that’s ok. So many people think that having to rewrite a process is a huge sin and that you’ve failed somehow. It’s really not you know. Not only are these types of things a learning process, but things also change that require you to change tactics.
I really hope you take what I’m saying here and apply it. And don’t be one of those idiots who tells me that he runs everything serially because he wrote the process on a single-CPU box and therefore he needs to standardize on that platform instead of taking advantage of a multi-CPU machine.
Watch my free SQL Server Tutorials at:
Read my book reviews at:
Blog Author of:
Database Underground – http://www.infoworld.com/blogs/sean-mccown
Follow my Twitter:
- Sean McCown
- I am a Contributing Editor for InfoWorld Magazine, and a frequent contributor to SQLServerCentral.com as well as SSWUG.org. I live with my wife and 3 kids, and have practiced and taught Kenpo for 22yrs now.
- ▼ August (9)