2016-07-24 25 views
0

我們有一個存儲過程由日常工作計劃調用,該工作計劃用於在合理的時間範圍內工作,但現在表現非常糟糕且失敗。無論原因如何,它似乎也陷入了整個系統的困境。我們嘗試重新啓動電腦,但問題依然存在。SQL Server計劃存儲過程正在運行,但現在運行速度非常緩慢

存儲過程充當ETL以將數據從一個數據庫導入另一個數據庫並進行一些更新。從工作中調用時,它曾經在一個小時內運行,但大約7天前它開始運行10-15小時。然後最後3天它完全失敗了。今天,我讓它運行10個小時,然後取消它。

失敗運行的錯誤消息發現它失敗,因爲日誌文件空間不足。所以我試圖通過使用下面的代碼縮小日誌文件。它的工作,但它並沒有減少文件的大小。由於代碼沒有工作,我嘗試使用SSMS萎縮,但失敗是由於錯誤:

Lock request time out period exceeded

我跑sp_who2和,不知道是肯定的(我是一個開發商不是DBA),發現這似乎相關的情況如下:

SPID: 63, Status: Suspended, Command: Delete, CPU Time: 1142382, DiskIO: 1254258

我想這可能是這個問題,所以我試圖結束使用Kill 63該交易。然而,似乎沒有工作,因爲如果我跑sp_who2它現在讀取

SPID: 63, Status: Suspended, Command: Killed/Rollback, CPU Time: 1142803, DiskIO: 1261601

任何幫助解決這一問題,將不勝感激!具體來說:

  1. 任何想法可能會突然造成不良表現?

  2. 如何縮小日誌文件?這可能會導致糟糕的表現嗎?

這是我試過的代碼:

USE MyDatabase; 
GO 

ALTER DATABASE MyDatabase 
SET RECOVERY SIMPLE; 
GO 

DBCC SHRINKFILE (MyDatabase_log, 1); 
GO 

ALTER DATABASE MyDatabase 
SET RECOVERY FULL; 
GO 
+1

儘管在這方面有很多關於數據庫知識的人,但你可能會有更好的運氣詢問[dba.se],因爲該網站可能更側重於與非發展相關的方面。 – jpw

+1

您提供的信息並沒有多大幫助。請發佈存儲過程的執行計劃,也嘗試更新存儲過程中涉及的對象的統計信息...發佈您的sql版本。最重要的是看看這裏,看看如何詢問並獲得幫助儘管它的tsql格式,嘗試瞭解本質..https://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ – TheGameiswar

+0

您需要查看與您的查詢相關的數據是否有增長。另外,查看「長時間運行的查詢」,您可能會看到一些趨勢 - 或者至少運行它們(如果它們正在讀取數據),然後監視您的服務器統計信息和基礎硬件。 –

回答

0

這最終是硬盤的問題。最初硬件團隊堅持認爲它不是,但經過進一步測試和評估後,它實際上是一個糟糕的磁盤。

相關問題