ALTER RESOURCE POOL (Transact-SQL)

適用於:SQL ServerAzure SQL 受控執行個體

變更 SQL Server 中現有的 Resource Governor 資源集區組態。

Transact-SQL 語法慣例

Syntax

ALTER RESOURCE POOL { pool_name | "default" }  
[WITH  
    ( [ MIN_CPU_PERCENT = value ]  
    [ [ , ] MAX_CPU_PERCENT = value ]   
    [ [ , ] CAP_CPU_PERCENT = value ]   
    [ [ , ] AFFINITY {
                        SCHEDULER = AUTO 
                      | ( <scheduler_range_spec> ) 
                      | NUMANODE = ( <NUMA_node_range_spec> )
                      }]   
    [ [ , ] MIN_MEMORY_PERCENT = value ]  
    [ [ , ] MAX_MEMORY_PERCENT = value ]   
    [ [ , ] MIN_IOPS_PER_VOLUME = value ]  
    [ [ , ] MAX_IOPS_PER_VOLUME = value ]  
)]   
[;]  
  
<scheduler_range_spec> ::=  
{SCHED_ID | SCHED_ID TO SCHED_ID}[,...n]  
  
<NUMA_node_range_spec> ::=  
{NUMA_node_ID | NUMA_node_ID TO NUMA_node_ID}[,...n]  

注意

若要檢視 SQL Server 2014 (12.x) 和舊版的 Transact-SQL 語法,請參閱 舊版檔

引數

{ pool_name | "default" }
現有使用者定義資源集區的名稱,或安裝 SQL Server 時所建立預設資源集區的名稱。

搭配 ALTER RESOURCE POOL 使用時,"default" 必須加上引號 ("") 或方括號 ([]) 才能避免與系統保留字 DEFAULT 產生衝突。 如需詳細資訊,請參閱< Database Identifiers>。

注意

預先定義的工作負載群組和資源集區都會使用小寫名稱,例如 "default"。 如果是使用區分大小寫之定序的伺服器,則應該將此列入考量。 具有不區分大小寫之定序 (如 SQL_Latin1_General_CP1_CI_AS) 的伺服器會將 "default" 和 "Default" 視為相同。

MIN_CPU_PERCENT =value
當 CPU 出現競爭時,為在資源集區中的所有要求,指定保證平均 CPU 頻寬。 value 是預設值為 0 的整數。 value 允許的範圍從 0 至 100。

MAX_CPU_PERCENT =value
當出現 CPU 競爭時,指定所有要求在資源集區中將會接收的最大平均 CPU 頻寬。 value 是整數,預設值為 100。 允許的 value 範圍為 1 至 100。

CAP_CPU_PERCENT =value
適用於:SQL Server 2012 (11.x) 及更新版本。

指定資源集區中要求的目標最大 CPU 容量。 value 是整數,預設值為 100。 允許的 value 範圍為 1 至 100。

注意

由於 CPU 治理的統計本質,您可能會注意到偶爾出現穗狀超過 CAP_CPU_PERCENT 中指定的值。

AFFINITY {SCHEDULER = AUTO | (Scheduler_range_spec) | NUMANODE = (NUMA_node_range_spec)}
適用於:SQL Server 2012 (11.x) 及更新版本。

將資源集區附加至特定排程器。 預設值是 AUTO。

AFFINITY SCHEDULER = (Scheduler_range_spec) 會將資源集區對應至指定識別碼所識別的 SQL Server 排程。 這些識別碼會對應至 sys.dm_os_schedulers (Transact-SQL) 中 scheduler_id 資料行的值。

使用 AFFINITY NAMANODE = (NUMA_node_range_spec) 時,資源集區會與對應至實體 CPU (其對應至指定的 NUMA 節點或節點範圍) 的 SQL Server 排程器相關聯。 您可以使用下列 Transact-SQL 查詢探索實體 NUMA 組態與 SQL Server 排程器識別碼之間的對應。

SELECT osn.memory_node_id AS [numa_node_id], sc.cpu_id, sc.scheduler_id  
FROM sys.dm_os_nodes AS osn  
INNER JOIN sys.dm_os_schedulers AS sc 
   ON osn.node_id = sc.parent_node_id 
      AND sc.scheduler_id < 1048576;  

MIN_MEMORY_PERCENT =value
指定為此資源集區所保留的最小記憶體數量 (不與其他資源集區共享)。 value 是預設值為 0 的整數。 value 允許的範圍從 0 至 100。

MAX_MEMORY_PERCENT =value
指定在此資源集區中,可供要求所用的伺服器記憶體總量。 value 是整數,預設值為 100。 允許的 value 範圍為 1 至 100。

MIN_IOPS_PER_VOLUME =value
適用於:SQL Server 2014 (12.x) 和更新版本。

指定要為資源集區保留之每個磁碟區的每秒 I/O 作業數 (IOPS) 最小值。 允許的 value 範圍從 0 至 2^31-1 (2,147,483,647)。 指定 0 表示集區沒有最小臨界值。

MAX_IOPS_PER_VOLUME =value
適用於:SQL Server 2014 (12.x) 和更新版本。

指定要允許資源集區使用之每個磁碟區的每秒 I/O 作業數 (IOPS) 最大值。 允許的 value 範圍從 0 至 2^31-1 (2,147,483,647)。 指定 0 可為集區設定無限的臨界值。 預設值是 0。

如果集區的 MAX_IOPS_PER_VOLUME 設定為 0,則完全不會管制集區,且即使其他集區設定 MIN_IOPS_PER_VOLUME,該集區也會保留系統中的所有 IOPS。 在此情況下,如果您希望此集區受 IO 管制,建議您將此集區的 MAX_IOPS_PER_VOLUME 值設定為較高的數字 (例如最大值 2^31-1)。

備註

MAX_CPU_PERCENT 和 MAX_MEMORY_PERCENT 必須分別大於或等於 MIN_CPU_PERCENT 和 MIN_MEMORY_PERCENT。

如果有可用的 CPU 容量,MAX_CPU_PERCENT 就可以使用高於 MAX_CPU_PERCENT 值的 CPU 容量。 雖然可能會有高於 CAP_CPU_PERCENT 的週期穗狀,工作負載不應該在延伸的時間期間內超過 CAP_CPU_PERCENT,即使有可用的額外 CPU 容量。

每個相似化元件 (排程器或 NUMA 節點) 的 CPU 百分比總計不應該超過 100%。

當您要執行 DDL 陳述式時,建議您先熟悉資源管理員的狀態。 如需詳細資訊,請參閱 Resource Governor

當變更計劃影響設定時,只有在執行 DBCC FREEPROCCACHE (pool_name) 之後新的設定才會在先前已快取的計劃中生效,其中 pool_name 是 Resource Governor 資源集區的名稱。

  • 如果您將 AFFINITY 從多重排程器變更為單一排程器,不需要執行 DBCC FREEPROCCACHE 因為平行計劃可以在序列模式中執行。 不過,它可能不會和編譯為序列計劃的計劃一樣有效率。

  • 如果您將 AFFINITY 從單一排程器變更為多重排程器,則不需要執行 DBCC FREEPROCCACHE。 不過,序列計畫無法以平行方式執行,因此清除個別的快取將會允許新計劃有可能使用平行處理原則進行編譯。

警告

從與超過一個工作負載群組相關聯的資源集區清除已快取的計劃,會影響包含以 pool_name 所識別使用者定義資源集區的所有工作負載群組。

權限

需要 CONTROL SERVER 權限。

範例

下列範例會保留 default 集區上的所有預設資源集區設定,除了變更為 MAX_CPU_PERCENT25 之外。

ALTER RESOURCE POOL "default"  
WITH  
     ( MAX_CPU_PERCENT = 25);  
GO  
ALTER RESOURCE GOVERNOR RECONFIGURE;  
GO  

在下列範例中,CAP_CPU_PERCENT 會將硬體上限設定為 80%,而且 AFFINITY SCHEDULER 會設定為個別值 8 以及 12 到 16 的範圍。

適用於:SQL Server 2012 (11.x) 及更新版本。

ALTER RESOURCE POOL Pool25  
WITH(   
     MIN_CPU_PERCENT = 5,  
     MAX_CPU_PERCENT = 10,       
     CAP_CPU_PERCENT = 80,  
     AFFINITY SCHEDULER = (8, 12 TO 16),   
     MIN_MEMORY_PERCENT = 5,  
     MAX_MEMORY_PERCENT = 15  
);  
  
GO  
ALTER RESOURCE GOVERNOR RECONFIGURE;  
GO  

另請參閱

資源管理員
CREATE RESOURCE POOL (Transact-SQL)
DROP RESOURCE POOL (Transact-SQL)
CREATE WORKLOAD GROUP (Transact-SQL)
ALTER WORKLOAD GROUP (Transact-SQL)
DROP WORKLOAD GROUP (Transact-SQL)
ALTER RESOURCE GOVERNOR (Transact-SQL)