2016-08-19 97 views
0

我有大SP包含主外部遊標(我知道,我知道,但我必須檢查每一行以確定如何處理它,例如寫入子表,異常表,報告等)和一些內部遊標。在這些遊標內,調用其他執行插入/更新和刪除操作的SP。SQL Server 2008r2提交性能問題

在最外層遊標的頂部,我做了一個BEGIN TRAN,並在遊標的末尾,在我循環回到TOP之前,我做了一個COMMIT TRAN。承擔所有工作(父母和孩子)的最外層行。

這是一個獨立的進程,在沒有用戶訪問目標數據庫的情況下運行,因爲它在軟件升級過程中發生。

我有一個調試語句顯示處理外部遊標的毫秒持續時間。在我執行此操作的大多數客戶中,該持續時間在整個過程中非常一致,但是在一個客戶中,持續時間逐漸變慢。此外,看起來這個客戶端的最後一個COMMIT需要84秒來處理,而其他的它不會影響任何相同的平均時間。

它在客戶端之間的代碼相同。隔離級別是相同的。

sp_configure選項幾乎相同。

客戶端DBMS位於虛擬服務器上,其數據和日誌具有良好平均的SQLIO時間。從一百萬行表中測試一個select */into [table]只需要3秒鐘,所以寫入和自動提交似乎沒問題。

想法或想法進一步診斷?

+0

可能有一百萬個原因。沒有看到一些代碼和更多的細節,沒有人可以提供超過推測。 –

回答

0

問題在於一個被調用的sp使用的性能差的索引 - 它正在執行一個表空間掃描,隨着搜索時間的增加逐漸變慢。