Over the years, I have written many articles about the fine art of processor selection for SQL Server. This is an important topic, because it has a direct relationship to your SQL Server license costs. It also affects your performance and scalability. As new processor families are introduced, I do the required analytical work and update my recommendations. In this post, I will list my recommended AMD Processors for SQL Server.
Note: I also have a list of Recommended Intel Processors for SQL Server.
SQL Server Licensing
Since SQL Server 2012, Microsoft has been using core-based licensing for SQL Server Enterprise Edition. Most organizations also use core-based licensing for SQL Server Standard Edition (even though server licensing is available).
With non-virtualized servers, you are required to purchase a SQL Server core license for every single physical processor core in the machine. Every single physical core present in the host machine must be licensed. It doesn’t matter if you have disabled physical cores in the host BIOS. This is also true if you have exceeded the physical core license limit for SQL Server Standard Edition. In either case, you still have to license every single physical core in the machine.
With virtualization, the story is slightly different. Normally, you have to purchase a SQL Server core license for every single vCPU in each virtual machine. There is a minimum of four core licenses per VM. The exception to this is if you purchase enough SQL Server core licenses for all of the physical cores in the entire host machine, and if you also purchase Microsoft Software Assurance. If you do this, you can then create as many VMs with as many vCPUs as you like.
Windows Server Licensing
Windows Server 2016 introduced a new core-based licensing model. The new model requires a minimum of eight physical core licenses per processor. It also requires 16 physical core licenses per host machine. Fortunately, these Windows Server core licenses are relatively affordable. This is especially true for Windows Server 2016 or 2019 Standard Edition. Windows Server Standard Edition is all that is required for most SQL Server instances.
Unfortunately, this new licensing model may encourage well-meaning server administrators to make a poor processor choices. They may select a processor with more physical cores than they actually need for SQL Server. A server admin might do this in order to “get their money’s worth” from the Windows Server core licenses. This could be a very expensive mistake from a SQL Server licensing cost perspective!
Processor Selection 101
Previously, I explained the relevant differences between physical sockets, physical cores and logical cores. Keep in mind that Microsoft does not care (for pricing purposes) whether a physical core is fast or slow. Regardless of the performance of the core, the per-core license cost is exactly the same.
Knowing this, you should purposely choose a particular processor SKU that has the best single-threaded performance possible for a given physical core count. A very common mistake I see is where a server administrator purposely selects a low-range or mid-range processor SKU (at a given core count) to save a small amount of money on the hardware. Quite often, they save far less than 1% of the total system cost, but give up anywhere from 20-40% of their single-threaded performance.
For any particular server processor product family, you have a range of available processor SKUs. These SKUs have different physical core counts and other relevant performance specifications, such as base clock speed. AMD doesn’t do as much artificial product segmentation as Intel does, so processor selection is easier.
Luckily, AMD recently introduced three “frequency-optimized” SKUs that are very well-suited for SQL Server usage. These include the EPYC 7F72, EPYC 7F52, and EYPC 7F32. If possible, you should favor using one of those SKUs for SQL Server.
Recommended AMD Processors for SQL Server
The table above shows the best SKUs at each physical core count for SQL Server usage. These system metrics are for a one-socket system. Note: I am purposely ignoring the “P” suffix SKUs, since they have lower base clock speeds.
The TPC-E score is the result of a proprietary calculation of the estimated TPC-E score for that processor. It uses an actual TPC-E submission as a baseline. It is a measure of the total CPU capacity of the system. The score/core is a measure of the single-threaded CPU performance of that processor. Finally, the license cost is for SQL Server 2019 Enterprise Edition.
The key takeaway here is that it is very important to do some thoughtful analysis of your available processor choices. This is especially relevant for a server that will have a SQL Server workload. The worst thing you can do is to just let someone else make the choice with no input from you. It is very easy to make a bad choice in this area.
Please let me know what you think in the comments. If you want to stay up to date with new information on this subject, follow me on Twitter. Thanks for reading!