2013-05-18 371 views
0

我有一個用VB.NET編寫的應用程序,它從SQL Server 2008 R2讀取數據。 登錄時,用戶從衆多數據庫文件中選擇一個(在下拉列表中可用),然後輸入用戶名和密碼登錄。在登錄時,應用程序將從選定數據庫中的表中讀取一個名爲'strings'的表,並將Do While循環放入一些25-30個變量中以創建應用程序的工作環境。延遲從特定數據庫讀取

我已經在Do While循環的開始和結束處進行了時間跟蹤,它顯示了對於其中一個數據庫,讀取所有值需要26秒,對於另一個需要0秒(因爲我不是在毫秒級追蹤)。

諷刺的是,在數據庫中時間爲26秒,「字符串」表具有125行和取0秒數據庫具有159行。顯然,代碼是相同的,數據庫結構也是一個真正的副本(兩個數據庫都是使用相同的腳本生成的)。

我已經想到了所有的可能性,但不知道爲什麼有這延遲了用戶的登錄時間等巨大的差異。

您能否介紹一下我如何弄清楚這一點?

謝謝

回答

0

沒有任何具體的信息是很難找到正在發生的事情。要返回大約一百個記錄不應該花費幾十毫秒,簡單的代碼通常不會影響性能。看來第二臺服務器有一個嚴重的性能問題。

  • 嘗試從SQL Server Management Studio對 服務器運行您的查詢,檢查慢速服務器上的CPU負載和可用內存。
  • 嘗試檢查網絡性能(ping或測量文件下載 時間)。
  • 嘗試直接在服務器上運行查詢。
+0

不幸的是,服務器是一樣的。我已經知道具有性能問題的數據庫最初是建立在SQL Server 2005上的.SQL Server 2005安裝後來升級到SQL Server 2008 R2。另一個速度很快的數據庫建立在SQL Server 2008 R2本身上。這可能導致這個問題? –

+0

@PrashantGupta:升級本身可能不會降低性能。但是,數據庫似乎很老。其中的索引可能處於不良狀態,請參閱重建索引technet.microsoft.com/en-us/library/ms187874(v=sql.105).aspx。查詢相應的服務器管理員來執行數據庫維護可能很有用。 – IvanH

0

了大量的研究和兩個數據庫文件的比較後,我發現數據庫文件(MDF)和日誌文件(LDF)的「初始大小」有很大不同。

快速數據庫的MDF和LDF文件均都超過200 MB。然而,緩慢的數據庫分別爲11MB和16MB。我使用Microsoft SQL Management Studio將慢數據庫文件的「初始大小」更改爲與快速數據庫相同的值,停止並啓動SQL Server和Whoa!現在沒有性能差異。

把這個作爲一個答案,以防萬一有人覺得它有用。