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

时间:2010-02-21 00:49:48

标签: sql-server stored-procedures

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

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

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

1 个答案:

答案 0 :(得分:6)

您可以使用Resource Governor指定传入的应用程序请求可以使用的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