共用方式為


ALTER RESOURCE POOL (Transact-SQL)

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

變更 Database Engine 實例的現有 資源管理員 資源集區組態。

注意

針對 Azure SQL 受控實例,您必須位於 master 資料庫中,才能修改資源管理員組態。

Transact-SQL 語法慣例

語法

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]

引數

{ pool_name |[default] }

這是現有使用者定義資源集區或內建 default 資源集區的名稱。

default 必須與括號([])或引號("")搭配使用,以避免與 ALTER RESOURCE POOLDEFAULT發生衝突,這是系統保留字。 如需詳細資訊,請參閱 資料庫識別碼

內建資源集區和工作負載群組會使用所有小寫名稱,例如 default。 在使用區分大小寫定序的伺服器上,使用小寫 default。 不區分大小寫定序的伺服器會將 defaultDefaultDEFAULT 視為相同的值。

MIN_CPU_PERCENT =

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

MAX_CPU_PERCENT =

指定資源集區中所有要求在發生 CPU 爭用時所接收的最大平均 CPU 頻寬。 value 是整數,預設值為 100。 允許的 value 範圍為 1 至 100。

CAP_CPU_PERCENT =

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

指定資源集區中所有要求的CPU頻寬上限。 將最大 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

指定 <scheduler_range_spec>AFFINITY SCHEDULER 將資源集區親和化至指定標識碼所識別的 Database Engine 排程器。 這些標識碼會對應至 sys.dm_os_schedulersscheduler_id 數據行中的值。

針對 指定 <NUMA_node_range_spec>AFFINITY NUMANODE 將資源集區親和化至對應至指定 NUMA 節點或節點範圍的邏輯 CPU 的 Database Engine 排程器。 您可以使用下列 Transact-SQL 查詢來探索實體 NUMA 組態與 Database Engine 排程器識別符之間的對應。

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 是預設值為 0 的整數。 允許的範圍是從 0 到 100。

MAX_MEMORY_PERCENT =

指定此資源集區中要求可使用的查詢工作區內存數量上限。 value 是整數,預設值為 100。 允許的 value 範圍為 1 至 100。

MIN_IOPS_PER_VOLUME =

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

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

MAX_IOPS_PER_VOLUME =

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

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

如果集區的 MAX_IOPS_PER_VOLUME 設定為 0,則集區完全不受 IO 控管,而且即使其他集區已設定 MIN_IOPS_PER_VOLUME,仍可接受系統中的所有 IOPS。 在此情況下,我們建議您將此集區 MAX_IOPS_PER_VOLUME 值設定為高數位(例如,最大值 2^31-1),讓此集區 IO 受到控管,並接受可能存在於其他集區的 IOPS 保留。

備註

所有資源集區的 MIN_CPU_PERCENTMIN_MEMORY_PERCENT 總和不能超過 100%。

MIN_IOPS_PER_VOLUMEMAX_IOPS_PER_VOLUME 指定每秒 IOS 的最小值和最大值。 IO 可以是讀取或寫入,而且可以是任何大小。 因此,使用相同的 IOPS 限制,最小和最大 IO 輸送量可能會根據工作負載中的 IO 大小混合而有所不同。

MAX_CPU_PERCENTMAX_MEMORY_PERCENT 的值必須分別大於或等於 MIN_CPU_PERCENTMIN_MEMORY_PERCENT的值。

CAP_CPU_PERCENTMAX_CPU_PERCENT 不同,因為與集區相關聯的工作負載可以在可用時,使用高於 MAX_CPU_PERCENT 值的 CPU 容量,但不能超過 CAP_CPU_PERCENT的值。 雖然尖峰可能比 CAP_CPU_PERCENT短,但即使有額外的CPU容量可用,工作負載仍不能超過 CAP_CPU_PERCENT

每個親和化元件 (scheduler(s) 或 NUMA 節點的總 CPU 百分比不能超過 100%。

如需詳細資訊,請參閱 資源管理員資源管理員資源集區

快取計劃

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

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

警告

從與多個工作負載群組相關聯的資源集區清除快取計劃,會使用 <pool_name>所識別的使用者定義資源集區,影響所有工作負載群組。

權限

需要 CONTROL SERVER 許可權。

範例

下列範例會保留 default 集區的所有目前資源集區設定,但 MAX_CPU_PERCENT會變更為 25%。

ALTER RESOURCE POOL [default] WITH (MAX_CPU_PERCENT = 25);

ALTER RESOURCE GOVERNOR RECONFIGURE;

下列範例會修改 adhocPool 資源集區,如下所示:

  • 分別使用 MIN_CPU_PERCENTMIN_MEMORY_PERCENT 保留 10% 的 CPU 和 5% 的查詢工作區內存。
  • 使用 MAX_MEMORY_PERCENT設定 15% 的查詢工作區內存限制。
  • 分別使用 MAX_CPU_PERCENTCAP_CPU_PERCENT,設定 20% 的軟 CPU 上限為 30% 的硬式 CPU 上限。
  • 使用 AFFINITY SCHEDULER將集區親和化為兩個邏輯 CPU 範圍(0 到 63 和 128 到 191)。

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

ALTER RESOURCE POOL adhocPool
WITH (
     MIN_CPU_PERCENT = 10,
     MAX_CPU_PERCENT = 20,
     CAP_CPU_PERCENT = 30,
     MIN_MEMORY_PERCENT = 5,
     MAX_MEMORY_PERCENT = 15,
     AFFINITY SCHEDULER = (0 TO 63, 128 TO 191)
     );

ALTER RESOURCE GOVERNOR RECONFIGURE;