以较低优先级运行SQL Server 2008 Sproc

dan*_*266 3 sql-server stored-procedures

我们有一个基于ASP.NET 3.5和SQL 2008的高容量Web应用程序,我们希望在不需要维护窗口的情况下保持24x7的高可用性水平.

随着时间的推移,我们已经变得依赖于一些存储过程,这些存储过程执行内务操作以清除不再需要的数据,编译一些指标等等.我们的问题是这些sprocs在服务器运行时消耗几乎所有的CPU,导致对网站的响应能力产生重大影响.

有没有办法以较低的优先级运行这些sprocs?只要我们可以减少对数据库服务器的CPU的影响,它们完成所需的时间并不重要.

Pau*_*sey 6

您可以使用资源调控 器指定传入的应用程序请求可以使用的CPU和内存量的限制.

BEGIN TRAN;
-- Create a new resource pool and set a maximum CPU limit.
CREATE RESOURCE POOL PoolAdhoc
WITH (MAX_CPU_PERCENT = 50);
-- Configure the workload group so it uses the new resource pool. 
-- The following statement moves 'GroupAdhoc' from the 'default' pool --- to 'PoolAdhoc'
ALTER WORKLOAD GROUP GroupAdhoc
USING PoolAdhoc;
COMMIT TRAN;
GO
-- Apply the changes to the Resource Governor in-memory configuration.
ALTER RESOURCE GOVERNOR RECONFIGURE;
GO
Run Code Online (Sandbox Code Playgroud)