Sql-Server
截斷表需要多長時間才能處理 252M 行(170GB 數據)?
我知道這裡面有很多變數,我不是在尋找確切的 min:sec 數量:) 我已經閱讀了許多資源,這些資源表明 a
TRUNCATE
使用的資源比 a 少得多DELETE
,因此性能會更快。但是沒有提到數量級。由於 aTRUNCATE
是 DDL(數據定義語言)操作而不是 DML(數據操作語言)操作,並且只有系統表是事務的一部分,我假設它不會花費很長時間。任何有經驗的人都可以使用接近這種尺寸的桌子來做這件事,可以提供一些見解?我們談論最多一分鐘,最多一個小時,幾天,幾週?
一毫秒左右。
截斷是 O(1) - 一個純元數據操作。
這是假設表上沒有並發活動。
截斷可能需要等到現有讀取完成才能獲取
Sch-M
(模式修改)鎖。對於大型表,實際的釋放是在後台執行緒(SQL Server 2000 SP3及更高版本)上非同步完成的。
有關截斷的其他一些神話,請參閱每天的 SQL Server DBA 神話:(19/30) TRUNCATE TABLE 未被Paul S. Randal 記錄。