我正在替換用ASP.NET 1.0編寫的遺留Web應用程序。我的計劃是在現有的數據庫模式之上使用MVC5重建一個新的GUI。作爲該過程的一部分,我將整個數據庫從SQL-Server 2000遷移到SQL-Server 2014,並在新的數據庫服務器上指向相同的Web實例。爲什麼DataAdapter.Fill()與SQL-Server-2014相比要慢於SQL-Server-2000
儘管對新服務器的查詢運行速度要快得多,但數據庫升級導致我們的網站變慢。我追溯到「DataAdapter.Fill()」調用的緩慢。連接到SQL-Server 2014時,來自Web應用程序的調用需要大約10秒鐘,而不是使用舊數據庫服務器3秒鐘(約慢3倍)。底層存儲是非常快的,所以這不是瓶頸。
新的數據庫服務器位於相同的網絡上,所以延遲不應該成爲問題。 Web服務器可以在不到10毫秒的時間內對舊服務器和數據庫服務器進行ping操作。
任何想法爲什麼數據庫升級會導致如此戲劇性的放緩?
是否有可能您的索引需要重建? – Capellan 2014-10-16 19:31:55
索引不是問題。即使使用「SET ARITHABORT OFF」,底層存儲也足夠快。運行「DBCC DROPCLEANBUFFERS」和「DBCC FREEPROCCACHE」確實加快了sproc,但是sproc並不是瓶頸。 我目前的理論是由於SQL版本之間的不匹配,DataAdapter.Fill()調用較慢。由於我通過.NET 1.0框架進行調用,因此它可能依賴於速度較慢的遺留支持API。我沒有任何證據或專業知識,但這就是我在這裏發佈的原因。 – CowboyBebop 2014-10-17 17:38:19