Friday, 13 June 2025

DBA- MAXDOP

 


Have your SQL queries been eating up CPU like it's a buffet?

Then it’s time to talk about the most underrated setting in SQL Server: MAXDOP.

Let’s break it down in simple, real-world terms — with best practices, optimized queries, and use cases that matter.


What is MAXDOP?

MAXDOP stands for Maximum Degree of Parallelism — it controls how many CPU cores SQL Server uses to run a single query in parallel.

Sounds powerful? It is — but misconfigured, it can hurt more than help.


  • Too low? Queries run slower, underutilizing hardware.
  • Too high? CPU gets overwhelmed, blocking other tasks.

🔧 Where to Configure MAXDOP:

  1. Instance Level (Recommended for Most)

EXEC sp_configure 'show advanced options', 1;

RECONFIGURE;

EXEC sp_configure 'max degree of parallelism', 4;

RECONFIGURE;

  1. Database Level (Overrides Instance Setting)

ALTER DATABASE SCOPED CONFIGURATION SET MAXDOP = 2;

  1. Query Level (Ultimate Control)

SELECT * FROM Orders OPTION (MAXDOP 1);

Best Practices (Backed by Microsoft & Field Work):

  • OLTP (Transactional Systems): Set MAXDOP to 2 – 4
  • OLAP / Data Warehouse (Heavy Reporting): Set MAXDOP to 8 or more based on available CPU cores
  • NUMA Architectures: Set MAXDOP per NUMA node
  • SQL Server ≤ 2016: Avoid MAXDOP = 0 (as it uses all available CPUs)

Always monitor with sys.dm_exec_requests and Query Store to check parallelism usage.

Advantages:

  • Faster query execution for large datasets
  • Efficient hardware usage
  • Greater control for different workloads

Disadvantages:

  • Poor configuration = massive CPU bottlenecks
  • Query plans may vary across servers/environments
  • Not ideal for small, frequent OLTP workloads

No comments:

Post a Comment

SQLDBA - Get Space Used by Tables and Indexes in SQL Server

 Get Space Used by Tables and Indexes in SQL Server Databases can consume significant amounts of storage, so it’s important to understand ho...