Psst – My services are likely more expensive than the memory your SQL Server needs and wants. Your CIOs and Directors need to stop thinking they are buying servers and components in 2004, or even 2010. I do all sorts of consulting gigs for all different reasons, but a lot of tuning gigs and wellness check findings lately could have been avoided (or delayed) if the “deciders” at companies diverted just a little of their services budget towards their capital budget… That’s what we’re going to talk about today – SQL Server Memory – well the prices anyway.
Evolution of Memory & Storage Prices
I’m still sort of young at 34. In High School, I was in the class of ’97. In 1997, memory prices were somewhere around $3 per MB.. Capacities were lower and prices were higher. To get a machine with 4GB of RAM back then (Forget the machine price, that would have been a big setback by itself) you would have probably spent somewhere around $12,000. A “decent” consumer harddrive back then would have cost you somewhere around $100/GB or $400 for a slllloowww spinny, rusty-metal 4GB Hard Drive..
Today? That same hard drive spend could probably get you two decent SATA 6 SSDs at about 256GB each and you can throw them in a mirror to present one fault tolerant drive. Over at Crucial that same memory budget could get you somewhere around 1TB of RAM – though you’d probably be better off just buying a new server, putting 96GB of RAM in it, decent processor(s) and maybe put some SSD drives in it – for about the same price.
I’m not going to play the comparison game here with different years – go look at the links I shared above. Look at the charts. Memory and Hard Drive space are less expensive.. But.. They aren’t just less expensive. The performance changes at an exponential rate. Just 13 years ago 15k drives were new and fast. Today just one lonely SSD can blow away a handful of drives from 2000 or even 2010 in most tests.
This Isn’t News
I know.. I know.. You probably think I can file this in the “obviously!” category like my post on how SQL Server join syntax has changed… I cannot tell you how often I still bump into servers that have a lot of data on them, with pitiful amounts of memory on them (and by pitiful I mean 2013 pitiful – 8GB, 4GB, etc.) and they are suffering some performance issues because of this. The point is – it isn’t obvious. Not to the folks making decisions.
You see, though, when I went off into consulting, I sort of thought that I’d get beyond those sort of discussions. Surely out in the flashy world of big challenges and serious performance tuning gigs this wouldn’t ever rear its head, would it? Well.. It does.
Aren’t you yelling at your clients right now? No.. I’ve had this conversation with some of my clients and they’ve moved ahead in their thinking on hardware, they realize that they are pricing the heavy hitting, pretty nice complete systems (HBAs/NICs/sometimes OS, sometimes not) in the $15k range instead of the $30-45k range that higher end servers were priced at even 6 years ago. They realize that giving their servers the memory and disk performance they need is easier than it ever has been.
I’m talking to the folks who haven’t hired me.. The folks who have great staff asking for memory and disk and better IO performance. To the managers who hear these requests but then start getting scared because they fear killing the budget with memory and drives – or even new servers with better CPUs.
You don’t need to be afraid! Go to HP’s site. Go to Dell’s site – whoever you use. Spec out a “dream server” and load it up with RAM, load it up with internal SSDs and thumb your nose at the SAN team and say “we’ll manage just fine with our umpteen and a half IOPs, thanks..” What’s the price? Not as bad as you thought, right?
SQL Server and Your Users Changed Too
We keep more data than ever before. We have more customers than ever before. People are using smart phones that have more processing power than computers did when I was in High School (and that wasn’t that long ago as we’ve already established). People are on social media. People are impatient. Latency is measured in ms not seconds. We have fast internet connections everywhere.. My phone’s data connection puts the modem I used to connect to BBSs as a
nerdy geeky teenager to shame. Your customers are impatient and we should be giving our database servers the resources they deserve. The manufacturers of DBMSs are changing also. They are realizing the lay of the land and have been making their products ready to live in a world where great memory is cheaper than amazing help. New offerings like SQL Server’s Hekaton are built around this concept, too. Do yourself a favor and take a look at your hardware. How old is it? Planning on upgrading soon anyway? Why not pull out the stops and spend an extra couple thousand dollars or so and look at the memory and drives you are throwing in your next server..
You Still Need SQL Server Consultants
Now.. This isn’t my way of saying I’m becoming a RAM reseller or anything. I had this discussion with a friend of mine and also a SQL consultant (who, like me is an MVP but unlike me is a MCM – great guy!), Brent Ozar (that’s the cool thing in this space, btw.. you can link to the “competition” it’s okay because we’re all in it together.) We were talking about this in the context of a mutual client and some recommendations there. Brent said he pretty much just tells folks to go for a 128GB server and allocate 64GB to SQL (Max SQL Standard edition can hold) nowadays. My first gut check was, “really?” but when you look at the pricing, it isn’t actually that bad of a move. If not 128GB, it is at least time to get out of the mindset of scraping by with your memory calculator measuring in 4GB increments.
This doesn’t mean folks like us don’t want clients. It doesn’t mean that your developers should have hardware thrown at their problems or that you don’t need that wellness check. It just means that in 2013, hardware shouldn’t really be as much of a concern. It also may mean – and this may come out wrong – that throwing hardware at a problem as one, initial, phase of an attack may not be that bad of an idea (ducking.. it’s okay I wanted to throw something at me right there too). I am not an advocate of it, and it will eventually not work so you should address those kinks. What I am saying, though, is if you are running a DB that needs some performance tuning and development help and you are running on a server built like it was still 2005 - you might consider looking around at the hardware available nowadays, while reaching out for that helping hand on the performance tuning side. 2005 me would have laughed at 2013 me if I reported back on the 1TB to 2TB of memory I just helped a client upgrade their SQL Server to. That was “expensive” but by memory standards in 2005? Not really.