2013-02-12 57 views
3

我正在將我的數據倉庫從SQL Server 2005遷移到SQL Server 2008。桌面更新有很大的性能下降。插入工作很好。如何提高2005年運行良好的SSIS 2008包的更新性能?

我在兩種環境中都使用相同的SSIS包,但2008仍然沒有更新權限。

我已經在所有表上運行了更新統計數據。該進程使用臨時表。我刪除了所有索引(除了更新所需的索引之外),但這些措施都沒有幫助。我還寫了一個模擬SSIS正在做什麼的更新聲明,並且它按預期運行得很快。

更新過程使用數據流任務(在該任務中還有其他內容,例如插入到processed表中以瞭解更新中使用的數據)。

這是一個全新的數據庫,沒有別的東西在上面運行。有什麼建議麼?

捕獲統計IO

  • 2005,CPU = 0,讀取= 150
  • 2008,CPU 1700,讀取= 33000

數據庫RAM:

  • 2005 ,40GB Total/18 Sql Server
  • 2008 128GB Total/110GB Sql Server
+0

感謝鏈接@Siva。我已經在使用登臺表了,我不想重寫這個過程,因爲問題似乎不僅僅是這張表。解決方案中是否還有其他解決方案,我錯過了這可以提供幫助? +1在你的答案,這是非常徹底的。 – jabs 2013-02-12 19:29:45

+2

捕獲並比較您的實際執行計劃。 SSMS版本和軟件包版本可能不同? – billinkc 2013-02-12 19:31:02

+0

@billinkc - 有一定的差異。在2005年,CPU = 0,讀取= 150; 2008年,CPU = 1700,讀取= 33,000。所以肯定有一些東西。任何建議,而我期待呢? – jabs 2013-02-12 19:51:56

回答

3

該問題發現在執行計劃中。 2008年的計劃是使用不同的表格構建更新聲明。背景:由於我們使用的索引視圖在查詢這些表時不允許任何其他訪問,因此我們構建了iView使用的較小/精簡表,而不是我們的維度,以使其可供用戶使用。優化器選擇這些表而不是我們在查詢中指定的那些表。

當我最初做解釋計劃時,我使用了錯誤的查詢,它沒有這個功能。這使所有的區別。

謝謝!

+0

感謝您回來並解釋!不過,你應該接受這個答案。 – 2013-02-12 22:07:58

+0

我會,但我必須等待2天。 – jabs 2013-02-12 22:09:17