Hi,I'm sure this is probably trivial for many of you as seasoned DBAs but as a database developer, I have a system performance situation that I'm hoping you can help guide me on. The issue is that I have an application with a fairly transactional database, and I have a reporting tool used by many people that executes views created in the main application's database (for real-time reporting). The problem is that each application is impacting the performance of the other because CPU sits at 100% while the certain views run.I'm sure there are some low-hanging fruit here, but just so you have the whole picture, here's some information about the setup.-SQL Server 20014 Standard - Max server memory is set to 20GB, MAXDOP is set to 4, Cost Threshold for parallelism is at the default of 5-Windows Server 2012 R2-VM with 32GB memory, 1 socket and 8 virtual processorsThe application with the fairly transactional database generally uses only about 10-15% of CPU, and it's only when reports get run (and therefore the views get run) that the CPU really takes a hit. Ideally, I would prevent any views or queries like that from interfering with any of the 10-15% of CPU that the application needs. I've been doing some research and here are some of my thoughts to address this. I would be very interested to hear how you might approach correcting this issue or if some of these options would be completely useless.- Rebuild indexes - I know the database is highly fragmented right now- Rewrite views - although I know that some are as optimized as I can make them- Increase max server memory of SQL Server / the VM itself- Update the values of sockets, virtual processors, and MAXDOP to a more optimized combination- Use affinity mask to make SQL think there are fewer CPUsIn your experience, have any of these proved to be consistently effective in reducing CPU utilization? Is there another option that I'm forgetting?Again, my primary goal is to prevent users from executing reports multiple times from the reporting tool and those queries interfering with the main application's performance, even if it takes the reports longer to return results.Thanks,Mike
↧