Sql-Server

為什麼在硬體更差的新伺服器上進行數據庫還原後查詢性能會大大提高?

  • March 12, 2016

一個從 SQL Server 載入列表的速度非常慢的 asp.net 頁面在整個數據庫在新的 SQL Server 上恢復後,它的性能大大提高了。asp.net 應用程序已移出和移入相同的伺服器。

該頁面的性能已提高到大約之前載入時間的 1/5。

新系統的記憶體甚至更少(12 GB 而不是 30 GB)。- 在舊的 SQL Server 上限制使用 30 GB 的 20 GB,它聲稱 20 GB。- 在新的 SQL Server 上限制使用 8 GB 的 12 GB,它實際上只聲稱 4.5 GB

新系統配備 Intel Xeon E CPU,而舊系統配備 Intel Xeon X CPU。

使用者表示,自搬遷以來,性能總體上有所提高。

不幸的是,我沒有我正在調查的頁面和/或查詢的基準,也根本沒有涉及的伺服器。

這種行為與我的預期相反!

所以問題是,有什麼可能改善這一點?

統計數據可能在這裡發揮作用嗎?我猜它們是數據庫的一部分,因此包含在恢復的數據庫中——或者它們是從頭開始創建的?任何想法和想法都非常受歡迎。

編輯 2016 年 3 月 11 日:

我測試了兩個系統的磁碟性能:舊磁碟性能為 0.3 MB/S 到 55 MB/s,平均為 30 Mb/s。新系統顯示 141 Mb/s 到 1690 Mb/s,平均 803 Mb/s。因此,由於磁碟性能似乎提高了 10 倍以上,我想這可能是提高性能的一個很好的理由。由於糟糕的設計(選擇 *)以及大量 blob 和 (n)TEXT 類型,我們使用了大量磁碟。所以很多數據不在記憶體中,必須從儲存中重複載入。此外,事務日誌已與數據文件分離到另一個驅動器(平均 800 Mb/s),舊伺服器上不是這種情況)。有人會同意我們可以假設這是(除了您所有有趣的想法之外)改進的主要原因嗎?

SQL Server 可用的記憶體量是查詢優化器選擇執行計劃的重要輸入。

記憶體減少的新 SQL Server肯定有可能鼓勵計劃不使用記憶體消耗操作(例如排序和散列),而這些操作恰好對您正在執行的查詢類型“更好”。

如果這確實是一個主要因素,那麼減少原始伺服器上可用的記憶體量也可能會提高其性能。通常,這將是不尋常的,假設統計數據很好並且查詢通常得到合理的基數估計。不過,它可能會解釋您所看到的;需要進行詳細分析才能確定。

要回答您的最後一個問題:是的,統計資訊是數據庫的持久部分,並且包含在備份/恢復中。

更新

根據問題中有關第二個系統的 I/O 性能大大提高的新資訊,是的,這很可能是原因。

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