2011-05-27 94 views
1

我遇到了當前模式的性能問題。所以我構建了一個等效的模式來解決這個問題。SQL Server 2008 R2 - 優化問題

我對兩種模式都進行了一些測試,結果很難理解。爲了記錄,數據是相同的。

在兩個模式上執行等效請求時,我從Profiler中獲得以下內容。

舊模式:

  • 1300000讀取
  • 5000 CPU
  • 4秒執行時間

新的模式:

  • 30000讀取
  • 3000 CPU
  • 6秒執行時間

的區別似乎是在所使用的查詢計劃。舊的模式在查詢計劃中具有並行性。新模式不使用並行性。

  1. 有沒有人遇到類似的情況(少IO/CPU,但執行時間更多)。你是如何解決它的?

  2. 有沒有辦法強制並行?我玩過查詢提示(http://msdn.microsoft.com/en-us/library/ms18171)。我能夠停止舊模式的並行性,但似乎無法在新模式上使用並行性。

在此先感謝。

+1

是指標一樣嗎?你重建了他們嗎?你有重新統計的數據嗎? – 2011-05-27 00:11:39

回答

2

路易斯,

目前還沒有辦法強迫並行在SQL Server開箱,但亞當Machanic做了一些工作,雖然這樣做。

http://sqlblog.com/files/folders/beta/entry29021.aspx

來到你的第一個問題,是的,我們已經看到了這樣的情況了。請注意,Parallelism是cpu綁定的,這就是爲什麼你看到更多的CPU時間,但總體上更少的執行時間,因爲你有多個線程爲你工作。

http://www.simple-talk.com/sql/learn-sql-server/understanding-and-using-parallelism-in-sql-server/

確保您有到位正確的索引和統計還與全掃描更新。從長遠來看,如果查詢優化器自己做出決定是最好的,但如果您想覆蓋QO計劃,那麼您可能需要添加更多的細節。架構,數據和repro。

HTH