Friday, July 11, 2008
Should I Use the sp_ Prefix for Procedure Names?
A little gem: SQL Server gives name-resolution preference to the master database for procedures that have the sp_ prefix. SQL Server looks for a compiled plan for the procedure associated with the master database and doesn't find it because, in this case, the sp_Select1 procedure exists in tempdb. SQL Server assumes the procedure isn't in cache (and thus must be recompiled) and acquires an exclusive compile lock on the stored procedure for a short time. However, the short time that the lock exists is enough to cause performance problems...
Using a prefix like usp_ should circumvent this quite nicely. Apart from that, having a naming convention (or nomenclature) in place is a great big ol' must have!
Tuesday, July 08, 2008
Antratek is selling .NET Micro Framework products
It's good to see that Antratek, a Dutch company, is now also selling a hardware platform with support for the .NET Micro Framework, the Embedded Master modules. The web site is in Dutch, translation is here. They're the first in the Benelux!
One of the nice key features (pdf) of the platform is a FAT file system using USB memory devices such as hard drives, as well as SD/MMC cards. Near unlimited data recording and storage, anyone?
It comes complete with Ethernet with full TCP/IP stack, 2 USB ports and the obligatory features like analog in/outputs, Serial Interfaces, Pulse Width Modulation (PWM) and so on. Prices start at EUR 199,96 for the Development Platform and EUR 63,96 for the Master Module.
I've bought stuff from Antratek before and it was a pleasure doing business with them.
Personal note: I am not affiliated with Antratek in any way.
Sunday, July 06, 2008
SharePoint Object Hierarchy: How it all fits together
Martin Kearn, a Microsoft Consultant from the UK, has drafted a picture of the overall Sharepoint hierarchy: How it all fits together. A very nice overview which certainly has its benefits.
Monday, June 30, 2008
TED: Benjamin Zander
A great talk.
Saturday, June 28, 2008
Passed My 24th Exam
Yesterday morning I took exam 70-431, SQL Server 2005 Technical Specialist, which I passed with flying colors: 940 out of 1000 points.
This was also my first encounter with real simulation-based questions! I have to say, it felt a bit uneasy at first and I backtracked a couple of times to make sure I answered my questions just right. It is soo easy to make additional unintended changes.
But in conclusion, I have to say that I like those questions. They test your knowledge of the technology in a much more real-world like fashion. And about those gradual changes like these in exam setups? Well, suffice to say that there is much more in store where that came from...
On a side note: the next exam will be a milestone! That will take me to 25 Microsoft Exams taken so far. I just have to choose a nice one. And I don't mean milestone. I'm open for suggestions.
By the way, if you take a look at the numbers of Microsoft Certified Professionals worldwide, you'll find that there is a great difference in numbers. A short list of some of the certifications I currently hold:
MCTS SQL Server 2005
MCTS MOSS Config
MCTS Team Foundation Server
MCITP Enterprise Admin
And for the bright ones among us: there is something odd about that page... can you spot it? The first one who tells me about it will get a candy bar if you're in the neighborhood.
Friday, June 27, 2008
Microsoft Certified Master: SharePoint Server 2007
The Microsoft Certified Master program has just launched. For now it only includes the following tracks:
- Microsoft Certified Master: Exchange Server 2007
- Microsoft Certified Master: SQL Server 2008
- Microsoft Certified Master: Windows Server 2008 – Directory
"The prices for the programs are $18,500USD which includes 3 weeks of training, and the first attempts at each of the four required tests: 3 'written' tests and one lab based exam. Retakes cost $250 per written test, and $1,500 for the lab exam, and you are only allowed a maximum of three attempts per test. We know this isn’t exactly pocket change, but based on customer feedback from the Ranger program, we are confident that it is a good value to those of you who will go through the program. We recognize that the cost may be a barrier to entry to some people who could otherwise make the grade—but that is something we will have to live with in the short term; getting top notch subject matter experts in one place for three weeks, the hardware, etc. just don’t come cheap."
There does not seem to be a Developer-specific track yet. Not even an 'it-isn't-here-yet-but-will-be-soon'-track! All tracks look more or less Infrastructure-based and there is only a vague promise of a Dev MCM. Stay tuned...
Off topic: I learned of the Master Program being created at Microsoft about four months ago. I didn't want to disclose its existence before going live. Hey, you never know what those pesky NDA's can do now can you?
Tuesday, June 24, 2008
Troubleshooting SPSite/SPWeb leaks and the Importance of Loadtesting
Stefan has a good article on troubleshooting leaks in your WSS and MOSS applications. One of the very nice features is that whenever a certain threshold is crossed, an entry will be written in the ULS logs:
"Potentially excessive number of SPRequest objects (<NUMBER>) currently unreleased on thread <NUMBER>"
This is a very convenient way for a Sharepoint Administrator to keep track of sites with an excessive amount of memory consumption through SPRequest objects.
He also talks about issues surrounding the potential number of site objects generated with a site navigation control:
"That means if you have a navigation control configured to enumerate 3 levels of sites and on each level you have 20 sites that you will end up with more than 400 SPRequest objects. So you need to be very careful with how to configure your navigation controls and also how many sites to create on each level!"
Now consider that each site object will use approximately 2-4 MB of memory on the server. Combine this with the scenario above and you will end up with a huge amount of allocated IIS memory. I don't know if this is per individual user session or not, but either way, this is not something you will want to have on your environment without some consideration beforehand.
There are roughly two ways to gauge what your application will do:
Based on the site architecture, software architecture, usage forecasts, amount of change permitted on the webpart architecture and so on, you can get an estimate on how your solution will behave. How many objects will there be any given time? What is the variance?
But -sadly- hardly anyone does this, let alone completely.
So, what's the second option?
This should come as no surprise. (If it does, shame on you!) Yes you can do unit testing. Yes you can do TDD. Yes you can test against coding guidelines. And yes you all will do functional testing. That's all good.
But only, and only if you test your whole A-Z architecture against real life usage and benchmark it, stress it, stress it hard, you will be able to get information how everything will hold up. How is that pesky CrossList webpart doing? And what about that navigation control? If it looks like it is generating a whole lot of memory pressure, you might want to consider other options and go back to the drawing board.
Loadtesting also includes talking to the client to get the testing requirements. What will be their expected usage patterns? Okay, you want the application to react fast? What do you mean by fast? Can you put that in numbers? Let's talk about your Application SLA. What can you tell me about it? How can we translate this into something meaningful for the project?
I can not stress this enough: if you do not incorporate loadtesting as a core requirement in the process, you will be introducing One. Huge. Unmanaged. Risk. Factor. Period.
I have seen too many deployments go down in flames because of this. You might have created a stunning application which leaves the customer absolutely breathless with tears in their eyes, but if he finds out that it will only scale to 6 concurrent users with no more that 5 pages per second before another Web Frontend (WFE) is needed, which, by the way, is definitely NOT the solution to your problem, you will have a serious problem. And this will not be easy to solve if you have come this far in the project.
This is what Microsoft has to say about it: "Load testing should be part and parcel of every Web development effort, and it should be performed early in the process. However, if you think you can load test using your development environment, you're going to have some surprises when you go live..."
So, to sum it all up: "if you do not loadtest, you fail".
Stefan Goßner : Troubleshooting SPSite/SPWeb leaks in WSS v3 and MOSS 2007
MSDN: Real-World Load Testing Tips to Avoid Bottlenecks When Your Web App Goes Live
Modeling the Real World for Load Testing Web Sites
Subscribe to Posts [Atom]