我們有一個存儲過程由日常工作計劃調用,該工作計劃用於在合理的時間範圍內工作,但現在表現非常糟糕且失敗。無論原因如何,它似乎也陷入了整個系統的困境。我們嘗試重新啓動電腦,但問題依然存在。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
任何幫助解決這一問題,將不勝感激!具體來說:
任何想法可能會突然造成不良表現?
如何縮小日誌文件?這可能會導致糟糕的表現嗎?
這是我試過的代碼:
USE MyDatabase;
GO
ALTER DATABASE MyDatabase
SET RECOVERY SIMPLE;
GO
DBCC SHRINKFILE (MyDatabase_log, 1);
GO
ALTER DATABASE MyDatabase
SET RECOVERY FULL;
GO
儘管在這方面有很多關於數據庫知識的人,但你可能會有更好的運氣詢問[dba.se],因爲該網站可能更側重於與非發展相關的方面。 – jpw
您提供的信息並沒有多大幫助。請發佈存儲過程的執行計劃,也嘗試更新存儲過程中涉及的對象的統計信息...發佈您的sql版本。最重要的是看看這裏,看看如何詢問並獲得幫助儘管它的tsql格式,嘗試瞭解本質..https://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ – TheGameiswar
您需要查看與您的查詢相關的數據是否有增長。另外,查看「長時間運行的查詢」,您可能會看到一些趨勢 - 或者至少運行它們(如果它們正在讀取數據),然後監視您的服務器統計信息和基礎硬件。 –