限制用户内存使用

Ham*_*thi 5 sql-server memory sql-server-2014

我使用的是 SQL Server 2014。有一些用户可以查询表。问题是,大多数时候这些查询使用大量内存。我想知道是否有任何方法可以限制每个用户的资源?

没有特定的查询。我只想控制用户。有时他们会做一些疯狂的事情。

Bah*_*ban 4

如前所述,您可以使用资源管理器来限制特定用户的内存使用量。

简要总结一下您应该执行的步骤:

  1. 创建资源池。此示例最多占用 30% 的内存,请小心。

    CREATE RESOURCE POOL UserMemoryPool
    WITH
    ( MIN_MEMORY_PERCENT=0,
    MAX_MEMORY_PERCENT=30)
    GO
    
    Run Code Online (Sandbox Code Playgroud)
  2. 创建将使用资源池的工作负载组。

    CREATE WORKLOAD GROUP UserMemoryGroup
    USING UserMemoryPool;
    GO
    
    Run Code Online (Sandbox Code Playgroud)
  3. 您应该定义一个分类器函数来告诉 SQL Server 谁将属于该组。

    CREATE FUNCTION dbo.UserClassifier() 
    RETURNS SYSNAME WITH SCHEMABINDING
    AS
    BEGIN
        DECLARE @Workload AS SYSNAME
        IF(SUSER_NAME() = 'UserNameToLimit')/*Specify the user*/
            SET @Workload = 'UserMemoryGroup'
        ELSE
            SET @Workload = 'default'
        RETURN @Workload
    END
    GO
    
    Run Code Online (Sandbox Code Playgroud)
  4. 最后启用资源调控器

    USE master
    GO
    ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = dbo.UserClassifier);
    GO
    ALTER RESOURCE GOVERNOR RECONFIGURE;
    
    Run Code Online (Sandbox Code Playgroud)

您可以在 MSDN 的资源调控器中找到更多信息