ALTER WORKLOAD GROUP (Transact-SQL)
選取產品
在下列數據列中,選取您感興趣的產品名稱,而且只會顯示該產品的資訊。
* SQL Server *
SQL Server 和 SQL 受控實例
變更現有的資源管理員工作負載群組組態,並選擇性地將它指派給不同的資源管理員資源集區。
注意
針對 Azure SQL 受控實例,您必須位於 master
資料庫中,才能修改資源管理員組態。
語法
ALTER WORKLOAD GROUP { group_name | [default] }
[ WITH
([ IMPORTANCE = { LOW | MEDIUM | HIGH } ]
[ [ , ] REQUEST_MAX_MEMORY_GRANT_PERCENT = value ]
[ [ , ] REQUEST_MAX_CPU_TIME_SEC = value ]
[ [ , ] REQUEST_MEMORY_GRANT_TIMEOUT_SEC = value ]
[ [ , ] MAX_DOP = value ]
[ [ , ] GROUP_MAX_REQUESTS = value ] )
]
[ USING { pool_name | [default] } ]
[ ; ]
參數
group_name |[default]
現有使用者定義工作負載群組或資源管理員內建 default
工作負載群組的名稱。
default
必須與括號([]
)或引號(""
)搭配使用,以避免與 ALTER WORKLOAD GROUP
DEFAULT
發生衝突,這是系統保留字。 如需詳細資訊,請參閱 資料庫識別碼。
內建資源集區和工作負載群組會使用所有小寫名稱,例如 default
。 在使用區分大小寫定序的伺服器上,使用小寫 default
。 不區分大小寫定序的伺服器會將 default
、Default
和 DEFAULT
視為相同的值。
IMPORTANCE = { LOW |MEDIUM |HIGH }
指定工作負載群組中要求的相對重要性。 預設值為 MEDIUM
。
IMPORTANCE
是包含工作負載群組的資源集區本機。 相同資源集區內不同重要性的工作負載群組彼此影響,但不會影響其他資源集區中的工作負載群組。
REQUEST_MAX_MEMORY_GRANT_PERCENT = 值
指定單一要求可從集區取得的最大查詢工作區內存數量。
值 是由 MAX_MEMORY_PERCENT
所定義的資源集區大小百分比。 預設值為 25。
在 SQL Server 2017 (14.x) 和較舊版本中,值 是整數,允許的範圍是從 1 到 100。
從 SQL Server 2019 (15.x) 開始,值可以是使用 float
數據類型的小數。 允許的範圍是從 0 到 100。
重要
指定的數量只是指透過查詢記憶體授與取得的查詢工作區內存。
不建議設定 值 太大(例如大於 70),因為伺服器可能無法為其他並行查詢預留足夠的可用記憶體。 這可能會導致記憶體授與逾時 錯誤 8645。
將 值 設定為 0 或小型值,可能會防止對需要工作區內存的運算符進行查詢,例如 sort
和 hash
,以免在使用者定義的工作負載群組中執行。 如果查詢記憶體需求超過此參數所定義的限制,就會發生下列行為:
- 針對使用者定義的工作負載群組,伺服器會嘗試減少要求 (DOP) 的平行處理原則程度(查詢),直到記憶體需求低於限制,或直到 DOP 等於 1 為止。 如果查詢記憶體需求仍然大於限制,就會發生錯誤 8657,且查詢失敗。
- 針對
internal
和default
工作負載群組,伺服器允許查詢取得所需的記憶體。
在任一情況下,如果伺服器沒有足夠的物理記憶體,可能會發生 錯誤 8645。
REQUEST_MAX_CPU_TIME_SEC = 值
指定要求可以使用的最大CPU時間量,以秒為單位。 值 必須是 0 或正整數。 值 的預設設定為 0,這表示無限制。
根據預設,如果超過最大時間,資源管理員不會防止要求繼續。 不過,會產生事件。 如需詳細資訊,請參閱 CPU 閾值超過事件類別。
從 SQL Server 2016 (13.x) SP2 和 SQL Server 2017 (14.x) CU3 開始,並使用 追蹤旗標 2422,資源管理員會在超過 CPU 時間上限時中止要求。
REQUEST_MEMORY_GRANT_TIMEOUT_SEC = 值
指定查詢可以等候查詢工作區內存授與可用的最大時間,以秒為單位。 值 必須是 0 或正整數。 值的預設設定,0 會根據查詢成本使用內部計算來判斷最大時間。
達到記憶體授與逾時時,查詢不一定會失敗。 只有執行太多並行查詢時,查詢才會失敗。 否則,查詢可能只會獲得最小記憶體授與,因而降低查詢效能。
MAX_DOP = 值
指定平行查詢執行的最大平行處理原則程度 (MAXDOP
)。
值 允許的範圍是從 0 到 64。
值的預設設定,0 會使用全域設定。
如需詳細資訊,請參閱 MAXDOP。
GROUP_MAX_REQUESTS = 值
指定允許在工作負載群組中執行的最大同時要求數目。 值 必須是 0 或正整數。 值 的預設設定為 0,並允許無限制的要求。 達到最大並行要求時,可以建立該群組中的會話,但會處於等候狀態,直到並行要求數目低於指定的值為止。
USING { pool_name |[default] }
將工作負載群組與 pool_name所識別的使用者定義資源集區產生關聯,或與 default
資源集區建立關聯。 如果未提供 pool_name,或未指定 USING
自變數,工作負載群組會與內建 default
集區相關聯。
default
是保留字,在 USING
中指定時,必須以方括號([]
)或引號(""
) 括住。
內建資源集區和工作負載群組會使用所有小寫名稱,例如 default
。 在使用區分大小寫定序的伺服器上,使用小寫 default
。 不區分大小寫定序的伺服器會將 default
、Default
和 DEFAULT
視為相同的值。
言論
ALTER WORKLOAD GROUP
允許 default
工作負載群組,但不允許 internal
群組。
在執行 ALTER RESOURCE GOVERNOR RECONFIGURE
之後,工作負載群組組態的變更才會生效。
如需詳細資訊,請參閱 Resource Governor 和 Resource Governor 工作負載群組。
MAXDOP
針對指定的查詢,會決定有效的 MAXDOP
,如下所示:
- 只要查詢提示未超過工作負載群組
MAX_DOP
設定,MAXDOP
就會接受。 -
MAXDOP
查詢提示一律會覆寫max degree of parallelism
伺服器組態。 如需詳細資訊,請參閱 伺服器組態:平行處理原則的最大程度。 - 工作負載群組
MAX_DOP
會覆寫max degree of parallelism
伺服器組態和MAXDOP
資料庫範圍設定。
每個 工作會設定 MAXDOP
限制。 這不是每個 要求 或每個查詢限制。 在平行查詢執行期間,單一要求可能會繁衍指派給 排程器的多個工作。 如需詳細資訊,請參閱 線程和工作架構指南。
當查詢在編譯時期標示為序列時(MAXDOP = 1
),不論工作負載群組或伺服器組態設定為何,在運行時間都無法使用平行處理原則執行。 判斷查詢 MAXDOP
之後,只能因為記憶體壓力而降低。 工作負載群組重新設定不會影響在記憶體授與佇列中等候的查詢。
快取計劃
當您變更會影響 MAX_DOP
等設定的計劃時,新設定只會在執行 DBCC FREEPROCCACHE (<pool_name>)
之後,才會在先前快取的計劃中生效,其中 <pool_name>
是目前工作負載群組所使用的資源管理員資源集區名稱。
- 如果將
MAX_DOP
變更為 1,則不需要執行DBCC FREEPROCCACHE
,因為平行計劃可以在序列模式中執行。 不過,這類計劃可能比編譯為序列計劃的計劃更有效率。 - 如果將
MAX_DOP
從 1 變更為 0 或值大於 1,則不需要執行DBCC FREEPROCCACHE
。 不過,序列計劃無法以平行方式執行,因此清除個別快取可讓新計劃可能使用平行處理原則進行編譯。
警告
從與多個工作負載群組相關聯的資源集區清除快取計劃,會使用 <pool_name>
所識別的使用者定義資源集區,影響所有工作負載群組。
索引建立
基於效能考慮,允許索引建立使用比最初授與更多的記憶體工作區。 資源管理員支援此特殊處理。 不過,初始授與和任何其他記憶體授與會受限於工作負載群組和資源集區設定。
在數據分割數據表上建立非對齊索引所耗用的記憶體,與所涉及的分割區數目成正比。 如果所需的記憶體總計超過 REQUEST_MAX_MEMORY_GRANT_PERCENT
工作負載群組設定強制執行的每個查詢限制,索引建立可能會失敗。 由於 default
工作負載群組允許查詢超過每個查詢限制,且所需的記憶體下限為回溯相容性,因此,如果 default
資源集區有足夠的記憶體總計,您可以使用 default
工作負載群組來建立相同的索引。
權限
需要 CONTROL SERVER
許可權。
例子
下列範例示範如何將預設群組中要求的重要性從 MEDIUM
變更為 LOW
。
ALTER WORKLOAD GROUP [default]
WITH (IMPORTANCE = LOW);
ALTER RESOURCE GOVERNOR RECONFIGURE;
下列範例示範如何將工作負載群組從目前所在的集區移至 default
集區。
ALTER WORKLOAD GROUP adHoc
USING [default];
ALTER RESOURCE GOVERNOR RECONFIGURE;
相關內容
* SQL 受控實例 *
SQL Server 和 SQL 受控實例
變更現有的資源管理員工作負載群組組態,並選擇性地將它指派給不同的資源管理員資源集區。
注意
針對 Azure SQL 受控實例,您必須位於 master
資料庫中,才能修改資源管理員組態。
語法
ALTER WORKLOAD GROUP { group_name | [default] }
[ WITH
([ IMPORTANCE = { LOW | MEDIUM | HIGH } ]
[ [ , ] REQUEST_MAX_MEMORY_GRANT_PERCENT = value ]
[ [ , ] REQUEST_MAX_CPU_TIME_SEC = value ]
[ [ , ] REQUEST_MEMORY_GRANT_TIMEOUT_SEC = value ]
[ [ , ] MAX_DOP = value ]
[ [ , ] GROUP_MAX_REQUESTS = value ] )
]
[ USING { pool_name | [default] } ]
[ ; ]
參數
group_name |[default]
現有使用者定義工作負載群組或資源管理員內建 default
工作負載群組的名稱。
default
必須與括號([]
)或引號(""
)搭配使用,以避免與 ALTER WORKLOAD GROUP
DEFAULT
發生衝突,這是系統保留字。 如需詳細資訊,請參閱 資料庫識別碼。
內建資源集區和工作負載群組會使用所有小寫名稱,例如 default
。 在使用區分大小寫定序的伺服器上,使用小寫 default
。 不區分大小寫定序的伺服器會將 default
、Default
和 DEFAULT
視為相同的值。
IMPORTANCE = { LOW |MEDIUM |HIGH }
指定工作負載群組中要求的相對重要性。 預設值為 MEDIUM
。
IMPORTANCE
是包含工作負載群組的資源集區本機。 相同資源集區內不同重要性的工作負載群組彼此影響,但不會影響其他資源集區中的工作負載群組。
REQUEST_MAX_MEMORY_GRANT_PERCENT = 值
指定單一要求可從集區取得的最大查詢工作區內存數量。
值 是由 MAX_MEMORY_PERCENT
所定義的資源集區大小百分比。 預設值為 25。
在 SQL Server 2017 (14.x) 和較舊版本中,值 是整數,允許的範圍是從 1 到 100。
從 SQL Server 2019 (15.x) 開始,值可以是使用 float
數據類型的小數。 允許的範圍是從 0 到 100。
重要
指定的數量只是指透過查詢記憶體授與取得的查詢工作區內存。
不建議設定 值 太大(例如大於 70),因為伺服器可能無法為其他並行查詢預留足夠的可用記憶體。 這可能會導致記憶體授與逾時 錯誤 8645。
將 值 設定為 0 或小型值,可能會防止對需要工作區內存的運算符進行查詢,例如 sort
和 hash
,以免在使用者定義的工作負載群組中執行。 如果查詢記憶體需求超過此參數所定義的限制,就會發生下列行為:
- 針對使用者定義的工作負載群組,伺服器會嘗試減少要求 (DOP) 的平行處理原則程度(查詢),直到記憶體需求低於限制,或直到 DOP 等於 1 為止。 如果查詢記憶體需求仍然大於限制,就會發生錯誤 8657,且查詢失敗。
- 針對
internal
和default
工作負載群組,伺服器允許查詢取得所需的記憶體。
在任一情況下,如果伺服器沒有足夠的物理記憶體,可能會發生 錯誤 8645。
REQUEST_MAX_CPU_TIME_SEC = 值
指定要求可以使用的最大CPU時間量,以秒為單位。 值 必須是 0 或正整數。 值 的預設設定為 0,這表示無限制。
根據預設,如果超過最大時間,資源管理員不會防止要求繼續。 不過,會產生事件。 如需詳細資訊,請參閱 CPU 閾值超過事件類別。
從 SQL Server 2016 (13.x) SP2 和 SQL Server 2017 (14.x) CU3 開始,並使用 追蹤旗標 2422,資源管理員會在超過 CPU 時間上限時中止要求。
REQUEST_MEMORY_GRANT_TIMEOUT_SEC = 值
指定查詢可以等候查詢工作區內存授與可用的最大時間,以秒為單位。 值 必須是 0 或正整數。 值的預設設定,0 會根據查詢成本使用內部計算來判斷最大時間。
達到記憶體授與逾時時,查詢不一定會失敗。 只有執行太多並行查詢時,查詢才會失敗。 否則,查詢可能只會獲得最小記憶體授與,因而降低查詢效能。
MAX_DOP = 值
指定平行查詢執行的最大平行處理原則程度 (MAXDOP
)。
值 允許的範圍是從 0 到 64。
值的預設設定,0 會使用全域設定。
如需詳細資訊,請參閱 MAXDOP。
GROUP_MAX_REQUESTS = 值
指定允許在工作負載群組中執行的最大同時要求數目。 值 必須是 0 或正整數。 值 的預設設定為 0,並允許無限制的要求。 達到最大並行要求時,可以建立該群組中的會話,但會處於等候狀態,直到並行要求數目低於指定的值為止。
USING { pool_name |[default] }
將工作負載群組與 pool_name所識別的使用者定義資源集區產生關聯,或與 default
資源集區建立關聯。 如果未提供 pool_name,或未指定 USING
自變數,工作負載群組會與內建 default
集區相關聯。
default
是保留字,在 USING
中指定時,必須以方括號([]
)或引號(""
) 括住。
內建資源集區和工作負載群組會使用所有小寫名稱,例如 default
。 在使用區分大小寫定序的伺服器上,使用小寫 default
。 不區分大小寫定序的伺服器會將 default
、Default
和 DEFAULT
視為相同的值。
言論
ALTER WORKLOAD GROUP
允許 default
工作負載群組,但不允許 internal
群組。
在執行 ALTER RESOURCE GOVERNOR RECONFIGURE
之後,工作負載群組組態的變更才會生效。
如需詳細資訊,請參閱 Resource Governor 和 Resource Governor 工作負載群組。
MAXDOP
針對指定的查詢,會決定有效的 MAXDOP
,如下所示:
- 只要查詢提示未超過工作負載群組
MAX_DOP
設定,MAXDOP
就會接受。 -
MAXDOP
查詢提示一律會覆寫max degree of parallelism
伺服器組態。 如需詳細資訊,請參閱 伺服器組態:平行處理原則的最大程度。 - 工作負載群組
MAX_DOP
會覆寫max degree of parallelism
伺服器組態和MAXDOP
資料庫範圍設定。
每個 工作會設定 MAXDOP
限制。 這不是每個 要求 或每個查詢限制。 在平行查詢執行期間,單一要求可能會繁衍指派給 排程器的多個工作。 如需詳細資訊,請參閱 線程和工作架構指南。
當查詢在編譯時期標示為序列時(MAXDOP = 1
),不論工作負載群組或伺服器組態設定為何,在運行時間都無法使用平行處理原則執行。 判斷查詢 MAXDOP
之後,只能因為記憶體壓力而降低。 工作負載群組重新設定不會影響在記憶體授與佇列中等候的查詢。
快取計劃
當您變更會影響 MAX_DOP
等設定的計劃時,新設定只會在執行 DBCC FREEPROCCACHE (<pool_name>)
之後,才會在先前快取的計劃中生效,其中 <pool_name>
是目前工作負載群組所使用的資源管理員資源集區名稱。
- 如果將
MAX_DOP
變更為 1,則不需要執行DBCC FREEPROCCACHE
,因為平行計劃可以在序列模式中執行。 不過,這類計劃可能比編譯為序列計劃的計劃更有效率。 - 如果將
MAX_DOP
從 1 變更為 0 或值大於 1,則不需要執行DBCC FREEPROCCACHE
。 不過,序列計劃無法以平行方式執行,因此清除個別快取可讓新計劃可能使用平行處理原則進行編譯。
警告
從與多個工作負載群組相關聯的資源集區清除快取計劃,會使用 <pool_name>
所識別的使用者定義資源集區,影響所有工作負載群組。
索引建立
基於效能考慮,允許索引建立使用比最初授與更多的記憶體工作區。 資源管理員支援此特殊處理。 不過,初始授與和任何其他記憶體授與會受限於工作負載群組和資源集區設定。
在數據分割數據表上建立非對齊索引所耗用的記憶體,與所涉及的分割區數目成正比。 如果所需的記憶體總計超過 REQUEST_MAX_MEMORY_GRANT_PERCENT
工作負載群組設定強制執行的每個查詢限制,索引建立可能會失敗。 由於 default
工作負載群組允許查詢超過每個查詢限制,且所需的記憶體下限為回溯相容性,因此,如果 default
資源集區有足夠的記憶體總計,您可以使用 default
工作負載群組來建立相同的索引。
權限
需要 CONTROL SERVER
許可權。
例子
下列範例示範如何將預設群組中要求的重要性從 MEDIUM
變更為 LOW
。
ALTER WORKLOAD GROUP [default]
WITH (IMPORTANCE = LOW);
ALTER RESOURCE GOVERNOR RECONFIGURE;
下列範例示範如何將工作負載群組從目前所在的集區移至 default
集區。
ALTER WORKLOAD GROUP adHoc
USING [default];
ALTER RESOURCE GOVERNOR RECONFIGURE;
相關內容
* Azure Synapse
Analytics *
Azure Synapse Analytics
改變現有的工作負載群組。
請參閱下方的 ALTER WORKLOAD GROUP
行為一節,以進一步瞭解 ALTER WORKLOAD GROUP
在具有執行中和佇列要求之系統上的行為。
CREATE WORKLOAD GROUP 的限制也適用於 ALTER WORKLOAD GROUP
。 在修改參數之前,請查詢 sys.workload_management_workload_groups 以確保值在可接受的範圍內。
語法
ALTER WORKLOAD GROUP group_name
WITH
([ MIN_PERCENTAGE_RESOURCE = value ]
[ [ , ] CAP_PERCENTAGE_RESOURCE = value ]
[ [ , ] REQUEST_MIN_RESOURCE_GRANT_PERCENT = value ]
[ [ , ] REQUEST_MAX_RESOURCE_GRANT_PERCENT = value ]
[ [ , ] IMPORTANCE = { LOW | BELOW_NORMAL | NORMAL | ABOVE_NORMAL | HIGH }]
[ [ , ] QUERY_EXECUTION_TIMEOUT_SEC = value ] )
[ ; ]
參數
group_name
這是正在改變之現有用戶定義工作負載群組的名稱。 group_name 無法改變。
MIN_PERCENTAGE_RESOURCE = 值
值 是介於 0 到 100 的整數範圍。 變更MIN_PERCENTAGE_RESOURCE時,所有工作負載群組之間的MIN_PERCENTAGE_RESOURCE總和不能超過 100。 變更MIN_PERCENTAGE_RESOURCE需要在命令完成之前,在工作負載群組中完成所有執行中的查詢。 如需詳細資訊,請參閱本文中的 ALTER WORKLOAD GROUP 行為 一節。
CAP_PERCENTAGE_RESOURCE = 值
值 是介於 1 到 100 的整數範圍。 CAP_PERCENTAGE_RESOURCE的值必須大於 MIN_PERCENTAGE_RESOURCE。 變更CAP_PERCENTAGE_RESOURCE需要在命令完成之前,在工作負載群組中完成所有執行中的查詢。 如需詳細資訊,請參閱本文中的 ALTER WORKLOAD GROUP 行為 一節。
REQUEST_MIN_RESOURCE_GRANT_PERCENT = 值
值 是小數點,範圍介於 0.75 到 100.00 之間。 REQUEST_MIN_RESOURCE_GRANT_PERCENT的值必須是MIN_PERCENTAGE_RESOURCE因素,且小於CAP_PERCENTAGE_RESOURCE。
REQUEST_MAX_RESOURCE_GRANT_PERCENT = 值
值 為十進位值,且必須大於 REQUEST_MIN_RESOURCE_GRANT_PERCENT。
IMPORTANCE = { LOW |BELOW_NORMAL |NORMAL |ABOVE_NORMAL |HIGH }
改變工作負載群組要求的預設重要性。
QUERY_EXECUTION_TIMEOUT_SEC = value
變更查詢在取消之前可以執行的最大時間,以秒為單位。 值必須是 0 或正整數。 值的預設設定為 0,這表示無限制。
權限
需要 CONTROL DATABASE 許可權。
例
下列範例會檢查目錄檢視中名為 wgDataLoads工作負載群組的值,並變更值。
SELECT *
FROM sys.workload_management_workload_groups
WHERE [name] = 'wgDataLoads'
ALTER WORKLOAD GROUP wgDataLoads WITH
( MIN_PERCENTAGE_RESOURCE = 40
, CAP_PERCENTAGE_RESOURCE = 80
, REQUEST_MIN_RESOURCE_GRANT_PERCENT = 10 )
ALTER WORKLOAD GROUP 行為
在任何時間點,系統中都有三種類型的要求:
- 尚未分類的要求。
- 分類和等候物件鎖定或系統資源的要求。
- 分類和執行的要求。
根據正在改變之工作負載群組的屬性,設定生效的時間會有所不同。
重要性或query_execution_timeout
對於重要性和query_execution_timeout屬性,非分類的要求會挑選新的組態值。 等候並執行要求會以舊組態執行。 不論工作負載群組中是否有執行中的查詢,ALTER WORKLOAD GROUP
要求都會立即執行。
REQUEST_MIN_RESOURCE_GRANT_PERCENT或REQUEST_MAX_RESOURCE_GRANT_PERCENT
針對REQUEST_MIN_RESOURCE_GRANT_PERCENT和REQUEST_MAX_RESOURCE_GRANT_PERCENT,執行要求會以舊組態執行。 等候要求和非分類的要求會挑選新的組態值。 不論工作負載群組中是否有執行中的查詢,ALTER WORKLOAD GROUP
要求都會立即執行。
MIN_PERCENTAGE_RESOURCE或CAP_PERCENTAGE_RESOURCE
針對MIN_PERCENTAGE_RESOURCE和CAP_PERCENTAGE_RESOURCE,執行要求會以舊組態執行。 等候要求和非分類的要求會挑選新的組態值。
變更MIN_PERCENTAGE_RESOURCE和CAP_PERCENTAGE_RESOURCE需要在變更的工作負載群組中清空執行的要求。 減少MIN_PERCENTAGE_RESOURCE時,釋放的資源會傳回至共用集區,讓來自其他工作負載群組的要求能夠利用。 相反地,增加MIN_PERCENTAGE_RESOURCE會等到只使用共用集區所需資源的要求完成為止。
ALTER WORKLOAD GROUP
作業會優先存取共用資源,而其他要求則等候在共用集區上執行。 如果MIN_PERCENTAGE_RESOURCE的總和超過 100%,則 ALTER WORKLOAD GROUP
要求會立即失敗。
鎖定行為
變更工作負載群組需要跨所有工作負載群組進行全域鎖定。 變更工作負載群組的要求會排入已提交建立或卸載工作負載群組要求的後置佇列。 如果一次提交一批alter語句,則會依照提交的順序進行處理。