程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL >> 強迫SQL Server履行籌劃應用並行晉升在龐雜查詢語句下的機能

強迫SQL Server履行籌劃應用並行晉升在龐雜查詢語句下的機能

編輯:MSSQL

強迫SQL Server履行籌劃應用並行晉升在龐雜查詢語句下的機能。本站提示廣大學習愛好者:(強迫SQL Server履行籌劃應用並行晉升在龐雜查詢語句下的機能)文章只能為提供參考,不一定能成為您想要的結果。以下是強迫SQL Server履行籌劃應用並行晉升在龐雜查詢語句下的機能正文


經由過程不雅察履行籌劃,發明之前的履行籌劃在許多年夜表銜接的部門應用了Hash Join,因為觸及的表中數據浩瀚,是以查詢優化器選擇應用並行履行,速度較快。而我們優化完的履行籌劃因為索引的存在,且表內數據異常年夜,過濾前提的值在一個很寬的統計信息步長規模內,招致估量行數湧現較年夜誤差(過濾前提現實為15000行,步長內估量的均勻行數為800行閣下),是以查詢優化器選擇了Loop Join,且沒有選擇並行履行,是以履行時光不降反升。

因為語句是在存儲進程中完成,是以我們直接對該語句應用一個undocument查詢提醒,使得該查詢的並行開支阈值強迫降為0,使得該語句強迫走並行,語句履行時光由20秒降為5秒(注:應用Hash Join提醒是7秒)。

上面經由過程一個簡略的例子展現應用該提醒的後果,示例T-SQL如代碼清單1所示:

SELECT *
FROM [AdventureWorks].[Sales].[SalesOrderDetail] a 
INNER JOIN [Sales].SalesOrderHeader b
ON a.SalesOrderID=b.SalesOrderID

代碼清單1.

該語句默許不會走並行,履行籌劃如圖1所示:

image
圖1.

上面我們對該語句加上提醒,如代碼清單2所示。

SELECT *
 FROM [AdventureWorks].[Sales].[SalesOrderDetail] a 
 INNER JOIN [Sales].SalesOrderHeader b
 ON a.SalesOrderID=b.SalesOrderID
 OPTION(querytraceon 8649)

代碼清單2.

此時履行籌劃會依照提醒走並行,如圖2所示:

image
圖2.

在面臨一些龐雜的DSS或OLAP查詢時碰到相似的情形,可以斟酌應用該Undocument提醒請求SQL Server盡量的應用並行,從而下降履行時光。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved