So we've been using a workhorse of a DB server for just over 7 years now, last year we began easing into a new server that is essentially better in every way, transition ontransitioning one database at a time. There is one database in particular that we moved to the new server and things got bad...
*Enable Contained Databases is not enabled on the new server, however, we don't utilize this feature.
Academically, everything about the new server should be able to handhandle the load of the old server, and then some.
- Is there some differancedifference in how Locks, latches, or page splits are handled on an AMD vs Intel Processor?
- Is there some difference in how Locks, latches, or page splits are handled on a Single Socket vs Multiple Sockets?
- Are there any SQL Data structures that may behave differently between the servers? (this is the only database we make use of Column Store indexes, filtered indexes, and a few other newer/fancy constructs to help speed things up)
- Are there other factors that should be would cause a database to behave so differently server to serer?
We run Ola Hallengren's amazing SQL Server Index and Statistics Maintentnce script nightly, reorganizing each table at 5% fragmentation and rebuilding at 30% fragmentation AND Updating INDEX statistics. This is run by SQL Agent on each server with no errors.
UPDATE 2
After taking some time to build out ways of replicating the load we were setting without impacting the customer, we started testing out various theories. The winner was @StrayCatDBA who called it with the power settings. Balanced power options ended up parking many of our cores, the server was never under enough load to get past this throttling, but it was enough to drive the server to struggle enough to impact workloads.
I thank everyone who took some time and chimed in. Some of the feedback has been helpful in the short term and some of it has helped to start the process of refactoring some of our more "aggressive" queries (and the practices required to compensate).