I am working on a server that houses both an OLTP workload and a data warehousing/reporting workload. The OLTP system requires sub-second (in the milliseconds) response time while the reporting workload has a threshold of minutes. The issue is some users will run multiple reports during peak transactional activity in our OLTP environment, thereby slowing the OLTP queries down. On their own, the OLTP queries tend to run 20-30ms, but when many reporting/data warehouse queries are fired up simultaneously the OLTP queries begin to run in the 4-5 second range. Our bottleneck appears to be CPU, as this is where all of our waits are.
I would of course like to separate the workloads on two different servers, but I’m wondering if we could get a quick improvement via use of Resource Governor.
I’m considering two approaches: (1) set a minimum allotment of CPU to the OLTP system so that it is guaranteed 25% resources, or (2) max and cap out the reporting\data warehouse queries so they cannot take more than 50% of the CPU.
Does anyone here have any practical experience with Resource Governor that would guide me in one of these two directions? Or is there another usage pattern that you’d suggest instead?