SQL Server uses your multi-cores as separate processors
I have mentioned this before, but licensing questions don’t excite me because they get you into legal verbiage that may change at the drop of a hat. When a loophole appears, you can be sure the vendor’s lawyers will be quick to close it down. I am much more interested in how products work technically. But I am often asked about the Microsoft SQL Server “per processor” licensing and how it relates technically to the product. Let’s take a look. Microsoft decided a while ago to license multi-core processors by the socket rather than the core. This gives us a big break in pricing and distinguishes Microsoft from Oracle which apparently charges a 50% license fee per core. With SQL Server, a quad-core processor requires one processor license but SQL Server will use all four cores as if they were individual processors. Low cost, high performance. What could be better? A question came up in a recent class: “I have a server with 4 x quad-core processors running SQL Server Standard Edition with 4 processor licenses. Does this mean SQL Server is using all 16 cores?”. On the technical side, SQL Server sees each core as a separate processor. SQL Server technically cannot tell the difference between a core in a Multi-Core processor and a “Single-core” processor, if that’s what we call them now. The cores are treated the same regardless. To SQL Server they are all processors. Check this out in SSMS under the Server Properties, Processors page. You’ll see each core listed as a processor. In our example, 16 processors are listed. However, SQL Server technically limits the “max degree of parallelism” by Edition. For instance, the Standard Edition is limited to 4 which means the number of processors employed to run a single statement, for each parallel plan execution is limited to 4 processors. See: http://msdn.microsoft.com/en-us/library/ms181007(v=SQL.105).aspx So each statement can use a maximum of 4 processors in parallel but SQL Server will choose any 4 processors that are available to it. Therefore multiple statements running at the same time may run against a separate set of 4 processors. So SQL Server Standard Edition will use all 16 cores but only 4 at a time. So the answer to our question is Yes and No. If you wanted to have each statement use all 16 processors at the same time you would need the Enterprise Edition which allows up to 32 processors to be used by a single statement. But soon I am sure we will have a multi-core processor that has more than 32-cores. Intel has been testing an 80-core CPU. Will this force Microsoft to rethink their licensing? Hopefully not. We’ll see. Cheers Brian Licensing changes in SQL Server 2008 R2… http://www.networkworld.com/community/node/61780




