Book Review: Inside SQL Server 6.5

Books Offline

30 years ago, back in 1988, Microsoft, Ashton-Tate, and Sybase got together to start building SQL Server 1.0 for OS/2.

I wanted to take a trip down memory lane to celebrate, but I didn’t wanna go back quite that far. I wanted to go back to what would probably be fairly recognizable – say, over 20 years ago: SQL Server 6.5 as of 1996.

I picked up half a dozen used books about SQL Server 6.5, then spent a delightful weekend reading them. Seriously delightful – lemme tell you just how into it I was. Erika and I eat all weekend meals out at restaurants, but she saw me so happily curled up in my chair reading that she insisted on going out and getting tacos for us just so I wouldn’t have to get up. I was having that good of a time READING BOOKS ABOUT SQL SERVER 6.5. (Also, Erika is amazing. Moving on.)

To bring you that same fun, I wanna share with you a few pages from Inside SQL Server 6.5 by Ron Soukup, one of the fathers of SQL Server. (And please do NOT pay full price for that. Used ones pop up for sale all the time, or support your local Goodwill or used book store. It’s not like it really matters which one of these 6.5 books you buy, hahaha – they’re all a hoot to read.)

This book was written long before Microsoft Press descended into bland marketing material. Back then, Ron could still pepper the book with all kinds of personal opinions and stories, bringing the material to life. Forgive the pictures – my scanner’s got a big line going down the middle, and I’ll be doggone if I’m going to buy even MORE old technology!

Chapter 1: a little business history to warm you up

Now, let’s move on to choosing the right hardware:

Installation time: picking between processor families

That’s right: SQL Server used to support Intel x86, MIPS R4000, DEC Alpha, and Motorola PowerPC. When I first read that, I thought, “Wow, I forgot how much of a Wild West hardware used to be.” But you know what? Today’s really no different – cloud vendors are the new processor choices. (And just like you, dear reader, don’t usually make the decision about the cloud vendor, you wouldn’t have been the one making the hardware decision either. That was done by big executives on golf courses as they talked to vendors.)

Once you’ve picked hardware, now it’s time to fill that box up with memory:

“I’d recommend start with enough memory to give SQL Server at least a 10-MB cache.”

Choosing storage is important too, of course:

You don’t have to worry about the CD-ROMs and tape drives being on the same SCSI channel. They don’t hog bandwidth.

As antiquated as this stuff sounds, DBAs are still dealing with the same problems today – it’s just that the problem has different names now. The work you have to do today to get maximum throughput from Azure VMs is really no different than what these people were monkeying around with 20 years ago. It’s just that instead of 6 drives per SCSI channel, now you’re dealing with how many Premium Disks you have to stripe together to saturate the network throughput of a given VM type. Same math, different names.

Then, how are we going to license our 1996 server?

The old server + CAL model

Hold on, hold on, that looks cheap, but it’s not as cheap as you think. When you translate it into today’s dollars due to infl….uh, actually, yeah, that’s still pretty cheap.

Alright, moving on. It’s purchased – let’s start installing and configuring it. Take memory, for example:

How to set max memory

Twenty years ago, way back in the dark ages, we had to use formulas in order to tell SQL Server – this massively powerful database system – how much memory it was allowed to use.

Today…we still do.

Today, software that costs $7,000 per core still can’t suggest a default amount of memory to take. These are the things that really blow me away as I read these books – sure, the terms have changed, but so much of the work we’re doing today is still exactly the same. I keep hearing about these magical robots that are going to take our job – so are we going to have to tell the robots what their max memory is, too? Or set their MAXDOP so it isn’t unlimited by default? (That’s how the world is going to end, by the way: Microsoft is going to bring out a robot, tell us to set its MAXDOP as part of the unboxing process, and a bunch of people are just going to open the box, let it breed, and we’re all going to die. Seriously, Microsoft, nobody reads the manual. Try not to kill us.)

Moving on – let’s create a database. Back in SQL Server 6.5, you had to create a “device” (not a file) on disk, then put the database inside the device:

It creates a basket, and then it puts the lotion in the basket

And I can almost hear you giggling, ha ha ho ho, Grandpa Database Administrator was so backwater, but stop for a second to think about what you do when you build a brand new, state of the art Azure Managed Instance.

You have to specify how big the storage is going to be.

For a database that doesn’t exist yet.

And when it runs out of space, you have to deal with it – just like Grandpa did.

Not so fancy now, are you, kiddo? Well, I’ve got good news: in this book, Ron gives us a vision into The Future:

The Future

THE FUTURE IS HERE, RON, AND IT’S AWESOME, BUT IT’S NOT ALL THAT DIFFERENT

Alright, moving on – let’s start storing some data:

Clustered indexes

Twenty years ago, you could buy a book off the shelf – just one book – and it gave you the history of the database system, licensing, purchasing, configuration, internals, how to write a query:

Working with CASE statements

That part about the comments down at the bottom is kinda funny – there was a 64KB limit for stored proc comments. However, “neither of these limitations is much of a worry.”

Oh, Ron, the future is terrible. Microsoft lifted that limit, and people build stored procedures that make Shakespeare look like an essayist.

Performance tuning checklist

That performance tuning checklist is still viable today. I could totally see this pinned up on a DBA’s cubicle wall. I’ll be tickled pink when the robots master any of this stuff. Take it. Please. Get it under control.

This performance tuning snippet intrigues me:

Joins managed in groups of 4 tables

I’ve heard this “groups of 4” thing repeatedly from different people, and I wonder if this is where it got its start. I’ve noticed that on really complex queries (20+ joins), if most of the filtering is done on tables far down the join list, I get a massive speed boost by moving those to the first 4 tables joined, and filtering on them as early as possible. Just seems to shape which query plan SQL Server considers first. It’d be neat to know that it actually is a hard solid rule of 4 though.

The “Watching the optimizer’s decision process” section is mesmerizing, seeing how they used to work through this stuff:

Hello, trace flags

What the trace flags produced

Man, Grandpa had it rough. Moving on.

Priority Boost: bad idea for 20+ years

They’ve been telling you Priority Boost is a bad idea for over TWENTY YEARS, but I still find it in a disturbing number of servers.

Whew. What did I learn from this monster book? Well, Ron could have finished writing this book, jumped into a time machine, walked into any modern database shop, and his 1990s skills would have translated pretty well into what we’re doing today. The data is bigger, the servers are faster, and the costs are way higher – but the basic plumbing is all still the same. SQL Server has made some things easier – but it’s added a whole lot more toys in the box, and those toys still aren’t easy to manage.

Reading these books, I’m more convinced than ever that I picked the absolute perfect career. I love working with databases – really, really love it – and there’s always so much more to learn. Part of me wishes I could have gotten started earlier to see more of the original genesis, but the rest of me knows that so much awesome stuff keeps coming into view, and I wouldn’t wanna miss that either.

If you liked this one, holler – I bought a few others and read ’em for fun, and I can share those as well if there’s interest.

Previous Post
I’m speaking at SQL Saturday NYC
Next Post
Hey, That’s Not My Sort!

42 Comments. Leave new

  • Jennifer Mahoney
    May 2, 2018 8:32 am

    Awesome! Particularly love your comments about sprocs & Shakespeare (wait! that might be me…), and the “groups of 4” pruning… I had not realized that but it makes SO MUCH SENSE! I’ve experienced similar behavior moving tables around in large multi-join situations. I’m up for another ‘throwback’ book review 🙂

    Reply
  • Great stuff! I’d love another too! (Man we must me getting old) . I always wonder what those guys we used to read (in print) are doing now.

    Reply
  • alen teplitsky
    May 2, 2018 9:12 am

    I remember those days of $50 per MB of memory. Still remember the day I paid around $150 in Italy for 16MB of RAM to upgrade from 24MB

    Reply
    • Dag Espolin Johnson
      May 3, 2018 4:07 pm

      Oh, you must be young. 🙂 I remember when the max size of an harddisk was 20MB, and the price of one of them was about 3,000 US$. 🙂

      Reply
  • That SQL 6.5 book was my first SQL Server book, which I read cover to cover back in the day. Thanks for bringing back memories of my early days in the SQL world. Please don’t address me as “Grandma”, M’kay?

    Reply
  • I had the 2000 version of that book, quite enjoyed it. (Of course I never finished it.) It’s funny to think that if one mastered this book, that their skills would still be quite relevant. 75% relevant does not seem out of the question.

    Reply
  • Fascinating. The first version I used. Man, it was a step up from Access ’97!

    Reply
  • Interesting that the 1996 explanation of what ‘network packet size’ does is clearer than the 2018 one.

    Reply
  • Ronald Veach
    May 2, 2018 11:46 am

    Hi Brett – Grandpa here and still doing DBA/IT work. Thanks for the trip down memory lane! We had the DEC Alpha running “SQL Server” but had to ditch it when Informix was ported as it just wasn’t up to the task. I agree that only the names have changed but the work is still pretty much the same. Only two big adjustments in my career – the WWW and Object Oriented programming, which weren’t too hard to understand. Logic is logic! just remember you will be one of those Grandpa’s and suddenly you will become dumb for some reason!

    Reply
  • Wow. 28MB of RAM, SCSI drives and Windows NT. Probably aging myself if I say that I began w/SQL Server v4.2. I remember my build for my 6.5 boxes. Then 7, 2000… all the way to 2016. Bigger, faster and more expensive, but I think it’s all pretty much the same. I really like it, though. Databases. Getting in there and making things happen. This really takes me back. Thanks, Brent!

    Reply
  • I remember working with 4.21 on up (‘a’ was a quick fix of something and quickly replaced 4.2 as Microsoft was known to put out a bad bug upon release and fix it. sometimes still does!). Argh! But it worked well enough in many cases. 6.5 was next best. 7.0 was way better. 2000 gave us named instances, multiple instances. And it has continued on from there. And yes 6.0 was sucky and didn’t last long.
    There were some very good books and I was reluctant to throw them away. Like SQL server 6.5 Black Belt! Which I don’t see now. But it seemed I could find many used on Amazon for a penny. And those books take up waayyyy too much space!

    Reply
  • Don Millhouse
    May 2, 2018 11:53 am

    The one thing we lost going from 6.5 to 7.0 was the ability to restore a single table from a backup. I do miss that feature.

    Reply
    • James Fogel
      May 6, 2018 6:09 pm

      I remember this. Wasn’t it to “protect” us from missing foreign keys? At the time, I augmented my backups with BCP exports to address this.

      Reply
  • Steve Malcolm
    May 2, 2018 11:55 am

    What a great read. Thanks, I started with DBase III and a book called “DBase III for Every Business” in 1985. I was working with a Maxon “portable” that was really more of a “lug-able”. Had to park the hard drive whenever it was moved. The salesman told me that the 10MB hard drive was all I would ever need. Great times. Keep ’em coming.

    Reply
  • Michael Wall
    May 2, 2018 12:21 pm

    Highly enjoyed the whole article and was impressed by the relevance from that very well written book.

    Reply
  • Anders Pedersen
    May 2, 2018 12:27 pm

    I do not miss the max record size from those early versions though.

    Reply
  • Share the other items as well Brent

    Reply
  • Cool stuff from the stone tablet era of computing.

    Reply
  • Brian in WI
    May 2, 2018 1:29 pm

    Thankfully I got to get rid of my SQL 6.5 books about a year and a half ago…when we finally retired our last 6.5/NT 4 server. Gotta love healthcare, always cutting edge!

    Reply
  • GRAEME J MARTIN
    May 2, 2018 1:32 pm

    Gosh. I remember adding RAM from a tube of individual 1mb *chips* LOL.

    Reply
  • Thanks for the trip down memory lane. In 1999 I to managed 700 SQL 6.5 servers running replication! I still haven’t recovered.

    Reply
  • I bought and read that book cover to cover when it came out. It absolutely leveled up my DBA skills. I still remember it most fondly. I can’t recall where the book ended up. I suspect I gifted it to a junior dev or a uni student intern or something. Great book. *thumbs up*

    Reply
  • I wonder if they thought mirroring would be further developed..
    RAID, redundant array of independent databases

    Reply
  • Alex Friedman
    May 3, 2018 4:25 am

    Amazing post, thanks for sharing!

    Reply
  • Jakob Bindslet
    May 3, 2018 5:59 am

    Excellent blast from the past!

    Reply
  • I still have a SQL Server 6.5 box, still in shrink wrap. I got it for free somewhere along the line and never used it.

    Reply
  • If you come across anything involving HIMEM.SYS, please post an image for giggles. Kids these days don’t know we had to reallocate memory blocks at OS startup just to get some applications to work. Now if you’ll excuse me, I’m missing an episode of Matlock.

    Reply
  • Dave Britten
    May 4, 2018 12:50 pm

    Damn it, now you’ve got me buying SQL Server 6.5 books on ebay. Now if I could only find a good 4.21 book to go with the NT 3.5 domain I have running in VirtualBox.

    One of these days I’ll see if I can get DataPerfect for DOS running in a multi-user environment with a Novell Netware server. Maybe I’ll schedule that one for after our SQL Server 2017 upgrade.

    Reply
    • I hope you kidding…or crazy. 🙂
      That time should be spent learning cloud!

      Reply
      • Dave Britten
        May 4, 2018 3:27 pm

        Just slightly crazy. I enjoy tinkering with old software here and there.

        Reply
        • Well there are only so many hours in the day. The company has a push for cloud and to get some certified. I can that say trying to start by getting your AWS Certified Solutions Architect Associate is pretty entertaining software wise. And costs very little to check out.
          I am just saying that if you like tinkering with that you may also like this very much. I am trying the Udemy course (about $10) and it is amazing what you can do with AWS.

          Reply
  • Derek Frye
    May 5, 2018 1:49 pm

    So much fun to see the old excerpts!

    Reply
  • James Fogel
    May 6, 2018 6:01 pm

    I recall all of this and remember that 7.0 made things so much easier. I was working with Oracle 7x just as much at the time so, SQL Server 6.5 wasn’t exactly difficult to deal with.

    Reply
  • Joshua McIntyre
    May 7, 2018 11:28 am

    So good, Brent, and encouraging against the doubters of our career viability in the current day! Keep ’em coming!

    Reply
  • Great post! A very enjoyable read.

    That “groups of 4” joins thing got me thinking about a problem large join query I had a couple of years ago and never got to the bottom of why moving a join changed the performance; I’ve always assumed JOIN order does not matter.

    Reply
  • […] weekend?” was my first thought but I kept reading and got more and more interested.  The blog in question really dove into the technical details of pre-millennial […]

    Reply
  • David W Bloyd
    June 27, 2019 12:46 pm

    I went from SQL Server 6.5/7 to SQL Server 2012 over a decade later from SQL Server to do Oracle work. I remember not being a big fan of the SQL Server 7 web-like Windows 95 interface and preferred SQL Server 6.5 at the time. I still find SQL Server today very familiar with these 1990’s versions of SQL Server. One thing I noticed is missing is that in SQL Server 2000, there was a English Query feature that was added. I noticed it was taken out from 2005 and beyond. I remember installing SQL Server 2000 in the early months to get a peak at the changes. I had remembered that feature being a separate product from a company at one point.

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

Fill out this field
Fill out this field
Please enter a valid email address.

Menu
{"cart_token":"","hash":"","cart_data":""}