2017-02-11 80 views
0

我們目前有一個SQL服務器程序超時查詢時遇到困難。 9次10查詢將運行在5秒內,但有時,該過程可以繼續運行超過2分鐘,並在前端(.net MVC應用程序)導致超時...存儲過程超時

他們一直在調查這一個多星期,檢查工作,服務器性能和所有似乎都沒問題..

DBA's已經縮小到一個特定的表,正在從不同的應用程序插入/更新轟炸。這與引起超時的複雜選擇查詢相結合(即時通知)導致超時。

對於如何解決這些超時問題,是否有任何建議? 即。

  • 複製表並查詢新表?
  • 任何額外的調試,可以證明這實際上是問題?
  • 也許緩存數據在前端,如果超時,從緩存中調用數據?
+0

存儲過程是否讀取或寫入數據? –

+0

@DanBracuk proc讀取數據 – Simon

+0

將事務隔離級別設置爲讀取已提交不會造成任何影響,並且可能有所幫助。 https://msdn.microsoft.com/en-CA/library/ms173763.aspx –

回答

0

一張被更新轟炸的桌子是一張桌子被鎖着的轟炸。是的,這可能會影響性能。

首先,複製表格並多次運行查詢。性能問題還有其他可能性。

SQL Server中存儲過程性能不穩定的一個原因是編譯。存儲過程中的代碼在第一次執行時編譯 - 生成的執行計劃可能適用於某些輸入,而不適用於其他輸入。這很容易通過使用該選項每次重新編譯查詢來解決(儘管這會增加開銷)。

然後,考慮一下查詢。它是否需要最新的數據?如果不是,也許你可以每小時複製一次表格或每天覆制一次表格。

如果需要最新的數據,您可能需要重新考慮架構。使用羣集標識列進行插入的表總是插入到表的末尾。這不太可能干擾桌上的查詢。

複製可能會或可能不會幫助解決問題。畢竟,完整複製將在複製副本上執行更新。轟炸兩張牌桌並不能解決「轟炸」問題。

如果您的查詢涉及大量歷史數據,那麼分區可能會有所幫助。只有最近的分區纔會被「轟炸」,使其他分區對查詢更加敏感。

0

數據庫管理員已經把它縮小到一個特定的表,它正在從不同的應用程序中插入/更新的轟炸。這與引起超時的複雜選擇查詢相結合(即時通知)導致超時

我們曾經面對很多超時問題並用於獲取大量升級..這是我們遵循的方法,以減少超時..

有些可能適用於你的情況,有些可能不會......但下面不會造成任何傷害

以下SQL Server設置更改:
1.遠程登錄超時:60
2.遠程查詢超時:0

而且如果您的Windows服務器被設置爲使用動態RAM ,嘗試將其更改爲靜態RAM ..

您可能還需要調整,一些窗口的服務器設置

TCP Offloading/Chimney & RSS…What is it and should I disable it?

按照上面的步驟,減少了99%我們的超時..

對於剩下的1%,我們處理各種情況下爲那些參與查詢
2表seperately

1.Update統計。嘗試進一步微調查詢

這有助於我們完全減少超時。