I'm back in Melbourne doing some performance-tuning work this week.
Yesterday's issue ended up being a caching problem in middle-tier code. These issues are surprisingly common.
The symptoms were hundreds of thousands of calls to a particular stored proc over a period of half an hour. It's a timely reminder that when you're tracing using SQL Trace calls or Profiler, it's important to avoid filtering out calls that aren't using too many resources, until you've looked at the bigger picture. For example, the logical reads, CPU, duration, etc. on each call were close to zero. No call on its own was a problem but the overall effect of the calls was staggering.
In the end, the problem was a cache timeout value set to 60 instead of 3600. The cache was meant to be flushed each hour, not each minute and the developer responsible thought the value was meant to be in minutes, not seconds.
One of the things that has always surprised me with SQL Server is the lack of extensibility points. In fact, the team seems to go out of their way to remove or avoid them. SQL Server Management Studio is an obvious example but I see it as a much deeper problem.
Taking SQL Server 2008 as a recent example, there is a fixed list of facets. Why? Surely there must be a well-defined interface that all the supplied ones adhere to. Why isn't that interface exposed?
I find that every time I'm in a software review or similar meeting, I'm the one in the room saying "how do I build one of those?".
I think the product would be so much richer if an ecosystem was permitted to be created around it. For example, I saw Klaus Aschenbrenner demonstrating a nice plug in for SSMS a while back that provided a class model style view of service broker objects. Why do such things have to be hacked into the product without having them integrated via supported interfaces?
The product team isn't the only source of ideas for extending the product and it also doesn't have limitless funds available for development. Why should the growth of the product be stunted by an inability to let other people expand it?
How important do you feel extensibility is for the product?
Microsoft have announced that they won't be running a BI conference as a separate event this year and that they will be supporting the SQL PASS summit as one of their key BI events for the year.
Because of that, PASS has extended the call for speakers (that originally was to close at April 10th), to allow for those that might now want to consider speaking at the summit.
Regardless, this means that the SQL PASS Summit will truly be the place to be for SQL Server and BI professionals this year. I hope to see you there.
Details are at: http://summit2009.sqlpass.org/
There seems to be a concept that no-one should install a new version of SQL Server until at least one service pack has been released for it. I've never ascribed to that thinking. I find it amusing that customers who would not install the RTM version of SQL Server 2008 (which was fully regression tested) would happily run SQL Server 2005 SP2 plus about 10 cumulative updates (which weren't).
Most of the issues I've seen with new versions tends to relate to the newer functionality. You do occasionally find exceptions to this but that's also why you need to do reasonable testing on your own applications.
Regardless, that adoption blocker is now gone with the release today of SP1 for SQL Server 2008. You can find it here: http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=66ab3dbb-bf3e-4f46-9559-ccc6a4f9dc19
I mentioned in a blog post a little while ago that we'd installed a copy of Levelator and started working through all the SQL Down Under shows to even out the volume of the speaker's voices. Mai has been working hard with that for some time and tonight I've posted up the last of the shows so they are now all "levelated"!
You'll find them at the "Previous Shows" tab at: http://www.sqldownunder.com.