提问人:Krzysztof Krysztofczyk 提问时间:4/14/2023 最后编辑:Krzysztof Krysztofczyk 更新时间:10/19/2023 访问量:287
特定用户的处理器资源利用率限制
Limitation of processor resource utilization for specific user
问:
对于一个用户,我是否有可能以某种方式限制可以使用的处理器资源?对于单个查询,我可以使用如下内容:
Option (MAXDOP 4)
是否可以以类似的方式限制特定用户执行的所有查询?当然,如果用户将运行 10 个单独的查询,我希望它们不仅会受到限制,而且会为累积重载设置限制。
答:
查看 SQL Server 资源调控器是否符合您的需求。
SQL Server 资源调控器是一项可用于管理 SQL Server 工作负载和系统资源消耗的功能。使用资源调控器,可以指定对传入应用程序请求可以使用的 CPU、物理 I/O 和内存量的限制。
我不知道是否可以限制每个用户,但您可以设置工作负荷组并将用户分配给一个。
评论
如果您有 SQL Server 的“企业版”,则可以通过几个步骤限制服务器资源:
1-创建资源调控器资源池:
资源池或池表示 服务器。可以将池视为虚拟 SQL Server 实例 在 SQL Server 实例中。
1.1- 创建有限资源池:此池中的资源有限
CREATE RESOURCE POOL LimitedResourcePool
WITH
(MIN_CPU_PERCENT=0,
MAX_CPU_PERCENT=25,
MIN_MEMORY_PERCENT=0,
MAX_MEMORY_PERCENT=25)
GO
1.2- 创建无限资源池:此池中的资源是无限的
CREATE RESOURCE POOL UnlimitedResourcePool
WITH
(MIN_CPU_PERCENT=25,
MAX_CPU_PERCENT=100,
MIN_MEMORY_PERCENT=25,
MAX_MEMORY_PERCENT=100)
GO
2- 创建资源调控器工作负荷组:
工作负荷组充当会话请求的容器,这些请求是 根据适用于的分类标准,相似 每个请求。
2.1- 在以下位置创建工作负荷组:LimitedResourcePool
CREATE WORKLOAD GROUP LimitedResourceGroup
USING LimitedResourcePool;
GO
2.2- 在以下位置创建工作负荷组:UnlimitedResourcePool
CREATE WORKLOAD GROUP UnimitedResourceGroup
USING UnlimitedResourcePool;
GO
3 - 创建资源调控器分类器函数:
SQL Server 资源调控器分类过程分配 根据 会话。
资源调控器支持对传入会话进行分类。 分类基于一组用户编写的标准,其中包含 一个函数。函数逻辑的结果启用资源调控器 将会话分类到现有工作负荷组中。
CREATE FUNCTION dbo.UDFClassifier()
RETURNS SYSNAME
WITH SCHEMABINDING
AS
BEGIN
DECLARE @WorkloadGroup AS SYSNAME
IF(SUSER_NAME() = 'LimitedUser')
SET @WorkloadGroup = 'LimitedResourceGroup'
ELSE IF (SUSER_NAME() = 'UnlimitedUser')
SET @WorkloadGroup = 'UnlimitedResourceGroup'
ELSE
SET @WorkloadGroup = 'default'
RETURN @WorkloadGroup
END
GO
-- If the user is within a specific domain, please ensure to provide the username as follows: <DomainName>\<UserName>.
4-启用资源调控器:
ALTER RESOURCE GOVERNOR
WITH (CLASSIFIER_FUNCTION=dbo.UDFClassifier);
GO
ALTER RESOURCE GOVERNOR RECONFIGURE
GO
如果以后要禁用资源调控器:If you want to later to Disable Resource Governor:
ALTER RESOURCE GOVERNOR DISABLE;
GO
如果要撤消前 4 个步骤:
ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = NULL)
GO
ALTER RESOURCE GOVERNOR DISABLE
GO
DROP FUNCTION dbo.UDFClassifier
GO
DROP WORKLOAD GROUP LimitedResourceGroup
GO
DROP WORKLOAD GROUP UnlimitedResourceGroup
GO
DROP RESOURCE POOL LimitedResourcePool
GO
DROP RESOURCE POOL UnlimitedResourcePool
GO
ALTER RESOURCE GOVERNOR RECONFIGURE
GO
评论