Compute capacity limits by edition of SQL Server

Applies to: SQL Server

This article discusses compute capacity limits for editions of SQL Server and how they differ in physical and virtualized environments with simultaneous multithreading (SMT) processors. On Intel CPUs, SMT is called Hyper-Threading.

Diagram showing the mappings to compute capacity limits.

This table describes the notations in the preceding diagram:

Value Description
0..1 Zero or one
1 Exactly one
1..* One or more
0..* Zero or more
1..2 One or two

To elaborate further:

  • A virtual machine (VM) has one or more virtual processors.
  • One or more virtual processors are allocated to exactly one virtual machine.
  • Zero or one virtual processor is mapped to zero or more logical processors. When the mapping of virtual processors to logical processors is:
    • One to zero: represents an unbound logical processor not used by the guest operating systems.
    • One to many: represents an overcommit.
    • Zero to many: represents the absence of virtual machine on the host system. So VMs don't use any logical processors.
  • A socket is mapped to zero or more cores. When the socket-to-core mapping is:
    • One to zero: represents an empty socket. No chip is installed.
    • One to one: represents a single-core chip installed in the socket. This mapping is rare these days.
    • One to many: represents a multi-core chip installed in the socket. Typical values are 2, 4, and 8.
  • A core is mapped to one or two logical processors. When the mapping of cores to logical processors is:
    • One to one: SMT is off.
    • One to two: SMT is on.

The following definitions apply to the terms used in this article:

  • A thread or logical processor is one logical computing engine from the perspective of SQL Server, the operating system, an application, or a driver.

  • A core is a processor unit. It can consist of one or more logical processors.

  • A physical processor can consist of one or more cores. A physical processor is the same as a processor package or a socket.

Systems with more than one physical processor or systems with physical processors that have multiple cores and/or SMT enable the operating system to execute multiple tasks simultaneously. Each thread of execution appears as a logical processor. For example, if your computer has two quad-core processors with SMT enabled and two threads per core, you have 16 logical processors: 2 processors x 4 cores per processor x 2 threads per core. It's worth noting that:

  • The compute capacity of a logical processor from a single thread of an SMT core is less than the compute capacity of a logical processor from that same core with SMT disabled.

  • The compute capacity of the two logical processors in the SMT core is greater than the compute capacity of the same core with SMT disabled.

Each edition of SQL Server has two compute capacity limits:

  • A maximum number of sockets (or physical processors or processor packages)

  • A maximum number of cores as reported by the operating system

These limits apply to a single instance of SQL Server. They represent the maximum compute capacity that a single instance uses. They don't constrain the server where the instance may be deployed. In fact, deploying multiple instances of SQL Server on the same physical server is an efficient way to use the compute capacity of a physical server with more sockets and/or cores than the capacity limits allow.

The following table specifies the compute capacity limits for a single instance of each edition of SQL Server:

SQL Server edition Maximum compute capacity for a single instance (SQL Server Database Engine) Maximum compute capacity for a single instance (AS, RS)
Enterprise Edition: Core-based Licensing 1 Operating system maximum Operating system maximum
Developer Operating system maximum Operating system maximum
Standard Limited to lesser of 4 sockets or 24 cores Limited to lesser of 4 sockets or 24 cores
Express Limited to lesser of 1 socket or 4 cores Limited to lesser of 1 socket or 4 cores

1 Enterprise Edition with Server + Client Access License (CAL) licensing is limited to 20 cores per SQL Server instance. (This licensing isn't available for new agreements.) There are no limits under the Core-based Server Licensing model.

Note

SQL Server limits the number of logical processors per NUMA node to 64. On servers with more than 64 logical processors per NUMA node, you can use a BIOS / firmware configuration to change the number of NUMA nodes per physical socket presented to the operating system, to limit to a maximum of 64 logical processors.

In a virtualized environment, the compute capacity limit is based on the number of logical processors, not cores. The reason is that the processor architecture isn't visible to the guest applications.

For example, a server that has four sockets populated with quad-core processors and the ability to enable two SMT threads per core contains 32 logical processors with SMT enabled. But it contains only 16 logical processors with SMT disabled. These logical processors can be mapped to virtual machines on the server. The virtual machines' compute load on that logical processor is mapped to a thread of execution on the physical processor in the host server.

You might want to disable SMT when the performance for each virtual processor is important. You can enable or disable SMT by using a BIOS setting for the processor during the BIOS setup, but it's typically a server-scoped operation that affects all workloads running on the server. You may consider separating workloads that run in virtualized environments, from workloads that would benefit from the SMT performance boost in a physical operating system environment.

Get help

Contribute to SQL documentation

Did you know that you can edit SQL content yourself? If you do so, not only do you help improve our documentation, but you also get credited as a contributor to the page.

For more information, see How to contribute to SQL Server documentation