2017-07-13 57 views
0

我在使用大量數據在Azure SQL數據庫上執行刪除語句時遇到問題。在Azure SQL數據庫中自動回滾刪除查詢

我有一個在Azure SQL數據庫上有大約500萬條記錄的銷售表。

當我執行一個存儲過程從該表中刪除所有數據時,它會執行一段時間,然後用新的id生成一個新進程,這樣現有進程開始回滾,並且在新進程回滾之後開始刪除數據,然後新進程再次生成另一個進程並開始回滾,並且這種相同的重複會一直持續下去。

最後,在很多小時後,存儲過程失敗並且數據不會被刪除。

我正在使用100DTU的Azure SQL數據庫。

有人知道會發生什麼嗎?

+0

你可以詳細說明這個部分'它執行一段時間,然後用新的id生成一個新的進程,並且這個現有進程開始回滾,並且在新進程啓動時回滾刪除數據然後新的進程再次產生另一個進程並開始回滾,並且這個相同的重複會一直持續下去,特別是你的意思是什麼過程......你在這個過程中是否遇到任何錯誤......爲什麼當你刪除整個文件時不能截斷表? – TheGameiswar

回答

1

這聽起來像是你正在經歷節流。 You can read more about that he re。您還可以檢查sys.event_log以查看是否存在節流事件。最好的解決方案是使用某種形式的分頁查詢將分解分成更小的塊。

1

刪除過程可能會達到該層的限制。您可以通過在刪除過程正在運行時運行以下查詢來確認。

SELECT 
    (COUNT(end_time) - SUM(CASE WHEN avg_cpu_percent > 80 THEN 1 ELSE 0 END) * 1.0)/COUNT(end_time) AS 'CPU Fit Percent' 
    ,(COUNT(end_time) - SUM(CASE WHEN avg_log_write_percent > 80 THEN 1 ELSE 0 END) * 1.0)/COUNT(end_time) AS 'Log Write Fit Percent' 
    ,(COUNT(end_time) - SUM(CASE WHEN avg_data_io_percent > 80 THEN 1 ELSE 0 END) * 1.0)/COUNT(end_time) AS 'Physical Data Read Fit Percent' 
FROM sys.dm_db_resource_stats 

--service水平目標的99.9%<(SLO)=去下一層

希望這有助於..

問候,

阿爾貝託·莫里略