0
在我正在開發的項目中,我們在執行兩個存儲過程(sp)期間檢測到了一些減速。 更確切地說,當兩者都嘗試在幾乎同一時刻在同一張表上運行一些語句時發生。 這兩種說法是:從SQL Server中的不同存儲過程刪除和讀取同一張表時的影響減少
- 從表中刪除單行(這種情況發生在SP A)
- 作出臨時表的更新,這與在SP上的刪除表連接(這發生在SP B)
當這些slowdonws發生時,它也可能需要幾分鐘的時間來終止語句。
用於連接和刪除where子句的字段被索引,但沒有一個是聚簇索引,它在另一個字段上。
下面是代碼的示例:
SP A
...other code...
DELETE OrderItems
OUTPUT @LogId, DELETE.OrderId, ...[Other colums]
INTO OrderItemsLog(LogId, OrderId, ...[Other columns])
WHERE OrderId = @OrderId
...other code...
SP B
...other code...
UPDATE [Update some columns on the temp table]
FROM #TempOrderItems toi
JOIN OrderItems oi ON toi.OrderId = oi.OrderId AND toi.OrderItemId = oi.OrderItemId
...other code...
當這兩條語句中的幾乎同一時刻被執行時,也有變慢。
有誰知道這可能是什麼原因......?
TNX
你需要檢查數據庫中發生了什麼,阻塞,查詢計劃,發生減速時發生死鎖等。只是基於閱讀代碼,你不能做太多。 –