程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 並行查詢讓SQL Server加速運行

並行查詢讓SQL Server加速運行

編輯:關於SqlServer

並行查詢其優勢就是可以通過多個線程來處理查詢作業,從而提高查詢的效率。SQL Server數據庫為具有多個CPU的數據庫服務器提供並行查詢的功能,以優化查詢作業的性能。也就是說,只要數據庫服務器有多個CPU,則數據庫系統就可以使用多個操作系統進程並行執行查詢操作,來加速完成查詢作業。

一、並行查詢三步走。

並行查詢作業在數據庫中,主要經過三個步驟。

首先,數據庫會判斷是否需要進行並行查詢。在數據庫中有一個查詢優化器,會對SQL語句進行優化,然後數據庫才會去執行查詢語句。而這個查詢器在對SQL語句進行查詢優化時,其中一個動作就是判斷是否需要對SQL語句進行查詢優化。也就是說,並不是所有的SQL查詢語句都可以從並行查詢中獲取收益。如果查詢優化器認為查詢語句可以從並行查詢中獲取收益的話,則就會將交換運算符插入到查詢執行計劃中,為並行查詢做准備。故哪些語句需要采用並行查詢,哪些不需要,這不用數據庫管理員關心。數據庫查詢優化器會幫管理員作出這個決定。數據庫管理員需要清楚的是,在哪些情況下,數據庫SQL優化器會認為不宜采用並行查詢。通常情況下,只要滿足以下條件的任何一個,則就不會執行並行查詢。一是對於特定的查詢,查詢優化器認為串行查詢執行計劃要快於任何可能的並行執行計劃;二是查詢的串行執行成本並不高,不需要進行並行查詢;三是查詢中包含無法並行運行的標量運算符或者關系運算符。若從數據庫管理員的角度講,第三個條件對我們具有最大的影響。當數據庫預計未來可能利用並行查詢來提高數據庫性能時,則在數據庫設計時,就需要注意避免使用那些無法在並行查詢功能中使用的運算符。因為某些關系運算符或者邏輯運算符可能會要求查詢計劃一定要在串行模式中進行,或者部分需要在串行模式下進行。如此的話,查詢優化器就不會利用並行查詢功能來提高查詢語句的性能。這是數據庫管理員在數據庫設計時必須要考慮到的一個細節問題。

其次,確定並行的進程數。當查詢優化器在查詢語句中插入交叉運算符之後,數據庫就會執行並行查詢。並行查詢在執行計劃時可以使用多個線程。此時,就又遇到了一個問題,數據庫會把這個查詢作業分成幾個進程操作呢?此時,數據庫管理員就需要知道上什麼叫做並行度。其實。在處理並行查詢的時候,數據需要知道最大可使用的進程與實際使用的進程。而最大可使用的進程就叫做並行度。這個並行度的值是在服務器級別中進行設置,也可以通過系統存儲過程來進行修改。但是,最大可使用進程數不一定等於實際是用進程數。實際是用進程數是數據庫在查詢計劃執行時初始化的時候確定的。也就是說,這不用數據庫管理員去額外的設定。數據庫系統會自動根據計劃的復雜程度來確定合理的進程數目。當然其實際采用的進程數不能夠超過並行度,即最大可以使用的進程數。

最後執行查詢。當以上內容確定好之後,數據庫就會執行具體的查詢語句。在這一步中,需要注意一個問題。數據庫管理員還可以在查詢語句中指定MAXDOP查詢提示來修改這個進度值。也就是說,如果某個查詢作業數據庫管理員認為可能會耗時比較久,就可以為這個查詢作業設置比較大的進度值。當利用MAXDOP查詢提示設置這個並行進度值之後,它會覆蓋預先設置的默認值。從而實現針對單個查詢語句設置額外的進度值,以提高某些特殊查詢作業的性能。

二、並行查詢中需要注意的內容。

注意點一:需要注意硬件方面的限制。

並行查詢是數據庫提高查詢性能的一個有力舉措。不過其往往受到比較大的約束。如上面提高的一些基於成本考慮之外,還有一些硬性的限制。如通常情況下,只有在數據庫服務器有多個微處理器(CPU )的情況下數據庫才會考慮執行並行查詢。也就是受,只有具有多個CPU的計算機才能夠使用並行查詢。這是一個硬性的限制條件。另外在查詢計劃執行過程中,數據庫還會判斷當時是否有足夠多的線程可以使用。每個查詢操作都要求一定的線程數才能夠執行;而且執行並行計劃比執行串行計劃需要更多的線程,所需要的線程數也會隨著並行度的提高而提高。如果在並行計劃執行的時候,當時數據庫服務器沒有足夠的線程讓並行計劃使用的話,數據庫引擎就會自動減少並行度,甚至會放棄並行查詢而改為串行計劃。所以說,數據庫是否能夠執行並行查詢,要受到其硬件的限制。為此,如果企業真的需要通過並行查詢來提高數據庫性能的話,則管理員就需要根據情況來調整硬件配置。

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