Azure-Sql-Database

如何限制 Azure SQL 數據庫中給定會話的 DTU 百分比消耗?

  • June 29, 2018

我們有一個 Azure SQL 數據庫層 S4 (200 DTU),裡面有一個大表

當我執行“alter index rebuild…”語句時,大約需要 18 分鐘才能完成

這個特定的非聚集索引大小為 5 Gb,在這 18 分鐘的重建過程中,它佔用了該數據庫可用的所有 100% DTU 當然,這會影響其他嘗試使用該數據庫的應用程序

問題:

How can we limit available resources for a given session that runs a rebuild ?
Say, we want to make it use only 50%-60% of Database's DTUs, but not 100%

這在 Azure SQL 數據庫上可行嗎?

問候,

你剛剛想到了一個很棒的增強請求。一種 OPTION(MAXDTU 5000) 的交易。

現在不在那裡。最好的選擇是以程式方式擴展您需要的操作,或者嘗試限制該操作的 MAXDOP 或者 OPTION (MAXDOP 1) 提示。索引操作將以串列方式執行更長時間,但可能會消耗更少的 DTU。

您是否考慮過使用 Resumable Online Index Rebuild 功能,以便您可以安排 X 次執行這些索引的一分鐘?

ALTER INDEX [ix_CustomerIDs]
ON [ContosoSales].[ConstosoTransactionData]
REBUILD
WITH (ONLINE = ON, RESUMABLE = ON, MAX_DURATION = 1 MINUTES);
GO

ALTER INDEX ix_CustomerIDs ON [ContosoSales].[ConstosoTransactionData] PAUSE

ALTER INDEX ix_CustomerIDs ON [ContosoSales].[ConstosoTransactionData] RESUME

在任何小的維護視窗期間執行索引維護時,您是否考慮過將層級擴展到高級以加快速度?您只需為擴大規模的一小時支付 Premium 費用,使用者可能會感覺到對性能的影響較小。

引用自:https://dba.stackexchange.com/questions/210948