Inside Microsoft SQL Server 2005: The Storage Engine
During 2007, I unexpectedly achieved a long-held ambition by increasing the number of books I regularly read (as opposed to merely buying, then leaving them to languish on the bookcase!). I read plenty of techie books of course, but also made use of local libraries and devoured plenty of books on other subjects, and even found time for some fiction. I think having a young baby in the house was partially responsible for this achievement - not much else to do of an evening any more!
Some books were great and will remain on my shelves for years to come. Plenty others were quickly returned to the libraries, or resold on Amazon Marketplace. Either way, I figure that it might be a nice addition to the old blog if I take the time to say a few words about some of them, so let's start with the book I've finished most recently.
Inside Microsoft SQL Server 2005: The Storage Engine by Kalen Delaney is one in a series of four books from MS Press, the other three having subtitles of T-SQL Programming, T-SQL Querying, and Query Tuning and Optimization. I suspect that The Storage Engine is the most deep and esoteric of the four volumes, offering an insight into the architecture and inner workings of SQL Server that isn't matched even by my old favourite SQL Server 2005 Unleashed.
By no stretch of the imagination could this be considered an introduction to SQL Server, and frequently I found myself skipping forward a few pages at a time, reasoning to myself that "there is no reason why I will ever need to know this!" - indeed, plenty of the first half of the book on topics such as architecture, configuration, files, logging, and recovery, would be of more use to DBAs and sysadmins rather than developers such as myself - not that it isn't nice to have an appreciation of these topics though.
From a developer perspective, it is the second half where this book really springs to life, with three great chapters on Tables, Indexes, and Locking & Concurrency. These are 235 pages of pure gold, offering to the willing reader a really deep understanding of what is really going on under the hood, and how exactly MSSQL goes about implementing your requests. It certainly blew apart some of my incorrect assumptions about internal table structures, and has given me a better understanding of the internal structures of clustered and nonclustered indexes.
SQL Server is one of the most widely used products in Microsoft's server range, and in my opinion also one of the most widely abused. Anyone who has worked in this industry for any length of time has inevitably witnessed some awful database designs (no primary keys? no foreign keys? no indexes? every column a varchar(50)? you know the kind of thing!), but we can all learn to improve our database designs, and the level of understanding offered by Kalen's book should help in the quest for perfection.
As long as my career keeps its technical focus, and I'm using SQL Server 2005, then this one is a keeper, and I've already ordered Kalen's other book in the series, Query Tuning and Optimization.