My database is running on SQL Server 2012 with 32 core processors. As per
sp_blitz (by Brent Ozar) we need to enable trace flag 8048.
Should we enable this flag on 2012, or it is recommended only for 2014 onwards?
Database Administrators Stack Exchange is a question and answer site for database professionals who wish to improve their database skills and learn from others in the community. It only takes a minute to sign up.Sign up to join this community
Microsoft's Bob Dorr wrote that trace flag 8048 is no longer required for SQL Server 2016 and newer:
This means that trace flag -T8048 is no longer valid or needed on SQL Server 2016 because the design is such that SQL Server dynamically adjusts to CMemThread wait activities in order to optimize performance.
However, the behavior it fixes (CMEMTHREAD waits) is still relevent for 2014 and earlier versions.
The behavior in newer versions of SQL Server is that the partitioning kicks in dynamically as certain thresholds are crossed. I don't have access to those calculations, so I can't tell you when it will kick in.
The problem is that you may still need 8048 for it to be the overall default behavior, since you may run into scenarios where you get close to but don't cross those thresholds, or the time it takes to alter the partitioning behavior still results in degraded performance.