Today we have a guest editorial from Andy Warren as Steve is at SQL Bits. This editorial was originally published on Feb 7, 2017.
I made a note to write about this after a recent conversation about Windows vs Linux. I found myself defending Windows a bit (the person I talked with had not considered server core), and it startled me a little to be doing so. I like Windows, it works fine for what I do, but really I don’t care what hosts SQL Server as long as it is reliable, performs well, and provides whatever OS level support SQL needs to do all it does. For me the OS is “the cloud”, something that should “just work” and that I don’t want to mess with!
Over the course of my career I’ve worked with teams that only used Windows and others that used Windows and Linux (but never Linux only, as until recently SQL Server didn’t run on Linux). It’s always seemed like adoption was Windows by default, then Linux was added based on one or more of these:
- Cost
- Coolness
- Comfort and experience
- Performance/overhead
- Application requirements
Let’s walk through that list in reverse. SQL Server requires Windows, so we run Windows, or we move to another platform. Or maybe the application we want to buy uses SQL Server, so we buy it and Windows, or we buy a different application. The right path? It all depends.
Then we get to performance/overhead. OS’es require memory and disk space. For a DBA both of those are noise compared to what we need to run an enterprise database server, but there are times when the ability to squeeze more onto a single hypervisor is important. I didn’t see a great apples to apples comparison when I was writing this, but if you had to guess, would you say that Linux or Windows required more resources? Everyone said Windows, right? Did you know that server core requires a minimum of 512MB of memory to run? Or take a look at Nano, which takes less than 1GB of space for a VM. Is it usable in production at those levels? Depends on the app and the workload of course.
Comfort/experience & the coolness factor are both real decision points. If your Windows admin has a strong Linux background, why not consider Linux so you have more options? Or if no one on the team has strong Linux experience, is it worth the savings to train them or hire someone new? There’s no doubt that Linux has been perceived as the cooler sibling and if you’re a Windows admin there’s a case to be made for being at least comfortable with doing the basics on Linux, and the best way to get there is to do real work with it.
Finally we get to cost. Linux gets adopted a lot because it’s free. I looked on Azure at the time I wrote this and a D15 v2 instance with 20 cores and 140Gib of RAM was $1.49 an hour with Linux. If you switch to Windows, the same configuration costs $2.43 an hour. That’s about an $8200 per year “tax” for running Windows on a server we might use for hosting SQL Server. Not a huge number compared to the SQL license cost, but not nothing either. All things being equal (and clearly that’s not yet the case for SQL Server on Linux) the cheaper one wins.
If you look at all of that and think about the factors involved, it’s interesting to speculate what would happen if Windows free (or free if hosted on Azure). Does Windows start to look more compelling than it did? Or are the glory days of the OS just about over as we move more and more stuff to a cloud? Those are two good questions for the next lunch with the server team!