- I'd Like to Help, But...
- What Concerns Me Is...
- Oracle Will Make You Thinner and Better Looking?
What Concerns Me Is...
Having to manage an enterprise-class system (SAP, in my case), I prefer to use a multiuser database. Now, you may think I use this term flippantly. After all, there are plenty of customers using SQL Server in a multiuser environment, correct? Maybe so, but are they handling large numbers of concurrent users because of their platform, or in spite of it?
Let's take the example of locking. To start with, Microsoft will tell you that its "reader-blocks-writer" mechanism is a good one. A safe one. It will tell you that this mechanism prevents the user from performing a "dirty read." Don't believe a word of it; it's only an excuse to make up for a lack of capabilities. (This reminds me of Sun's long-standing argument that 64-bit systems are unnecessary. Unnecessary, that is, until they started selling them. Then, Scott McNealy was in your face every other day singing the virtues of addressing ever-increasing amounts of physical memory!)
So, what is a dirty read? Microsoft will tell you that if a person is updating a row, and you were to read the row mid-update, that would be a dirty read. Dirty read = bad. That's what Microsoft wants you to believe. But what if that update goes uncommitted for a long period of time? The data hasn't actually changed yet. What if that update gets rolled back at the end of the transaction? Then what have all those readers waited on? Nothing.
It's just as if I were in the grocery store, standing in front of the juices, trying to decide which one to bring home. I know I'm going to pick one. I know my kids will want juice to drink for breakfast the next morning. I have my hand reached out, but I just can't decide which one to grasp. Last week I got apple. The week before that? White grape. But now I'm thinking maybe cranberry-grape. You, on the other hand, are standing behind me thinking, "When is this idiot going to pick a bottle and get out of my way? I know exactly what I want!"
We're in the Microsoft grocery store, you see, in which you would be forced to wait until I made a selection before you could even look at what was available. It wouldn't make sense, after all, for you to see that tempting cranberry-grape juice sitting there on the shelf when I might just take it for myself, right? I might be just looking, but Microsoft knows that you want to take a juice with you, so you need to wait for me to either stop looking or to go ahead and pick something before you can get yours.