Sql-Server-2008

SQL Server 從 2008R2 升級到 SQL Server 2014 後出現超時錯誤

  • September 8, 2016

我們的數據庫有一個 SQL Server 2008R2 企業版來支持前端應用程序。我們以前從未遇到過任何超時問題。最近,該公司決定將數據庫升級到 SQL Server 2014 企業版,其中 2 個節點始終在集群設置上。新伺服器比舊伺服器有更好的 CPU 和記憶體。

升級後我做了所有必要的修改,檢查數據庫一致性,執行 DBCC UPDATEUSAGE,更新統計資訊,重建索引,重新編譯儲存過程等等。數據庫切換和遷移一切順利。但是,我們的使用者開始抱怨超時問題。

我一直在查看不同的文章、部落格文章並進行了一些修改,例如更改連接字元串並添加 MultiSubnetFailover = ‘True’,這似乎有很大幫助並最大限度地減少了超時頻率,但問題仍然存在。有誰知道什麼會導致這個問題以及如何解決它?我非常感謝您提出解決此問題的建議和建議。

我終於找出了問題所在。經過幾天的努力,我檢查了 SQL Server 報告,發現臨時 db 數據庫出現了非常大的自動增長情況。問題的原因是,在將數據庫遷移到我們的新伺服器後,系統數據庫文件大小未配置,並且 tempdb 有辦法使文件大小小於應有的大小。

看起來每當在 tempdb 上發生自動增長操作時,查詢都會被迫回滾並導致問題。我只是更改文件大小以及文件增長大小。現在它就像一個魅力,從那時起就沒有問題了。

基數估計邏輯已針對 SQL Server 2014 進行了更新,這可能是一個原因。您必須使用舊的基數估計器測試相同的查詢並比較性能指標。您可以通過將兼容性級別降低到 <120 來做到這一點。

我會在測試伺服器上而不是在生產環境中執行所有這些測試。

https://msdn.microsoft.com/en-us/library/dn600374(v=sql.120).aspx https://www.brentozar.com/archive/2014/04/sql-2014-cardinality-estimator-eats-bad-tsql-breakfast/

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