Sql-Server

並行統計更新

  • April 24, 2018

在 SQL Server 2008 或更高版本中,是UPDATE STATISTICS WITH FULLSCAN單執行緒操作還是可以使用並行?使用預設採樣更新統計資訊怎麼樣 - 它可以使用並行性嗎?我沒有看到指定MAXDOP更新統計資訊的選項。

並行統計更新自 SQL Server 2005 以來一直可用。它記錄在 TechNet 文章“Microsoft SQL Server 2005 中查詢優化器使用的統計”中

文章摘錄

在執行完整掃描的情況下(無論是否明確請求),為數據收集生成的內部查詢具有以下一般形式:

SELECT
   StatMan([SC0])
FROM 
(
   SELECT TOP 100 PERCENT
       [Column] AS [SC0]
   FROM [Table] WITH (READUNCOMMITTED)
   ORDER BY [SC0]
) AS _MS_UPDSTATS_TBL
OPTION (MAXDOP 16)

注意MAXDOP那裡的提示(儘管使用者無法手動指定提示)。在收集抽樣統計資訊的地方,內部查詢使用該TABLESAMPLE子句,這會阻止並行性。引擎還會MAXDOP 1在內部查詢上生成一個提示,這有點多餘。

如果您需要降低並行度,可以使用資源調控器(僅限企業)MAXDOP覆蓋內部查詢中的提示。

SQL Server 2016增加了並行採樣統計更新。

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