Sql-Server

截斷表需要多長時間才能處理 252M 行(170GB 數據)?

  • September 10, 2017

我知道這裡面有很多變數,我不是在尋找確切的 min:sec 數量:) 我已經閱讀了許多資源,這些資源表明 aTRUNCATE使用的資源比 a 少得多DELETE,因此性能會更快。但是沒有提到數量級。由於 aTRUNCATE是 DDL(數據定義語言)操作而不是 DML(數據操作語言)操作,並且只有系統表是事務的一部分,我假設它不會花費很長時間。

任何有經驗的人都可以使用接近這種尺寸的桌子來做這件事,可以提供一些見解?我們談論最多一分鐘,最多一個小時,幾天,幾週?

一毫秒左右。

截斷是 O(1) - 一個純元數據操作。

這是假設表上沒有並發活動。

截斷可能需要等到現有讀取完成才能獲取Sch-M(模式修改)鎖。

對於大型表,實際的釋放是在後台執行緒(SQL Server 2000 SP3及更高版本)上非同步完成的。

有關截斷的其他一些神話,請參閱每天的 SQL Server DBA 神話:(19/30) TRUNCATE TABLE 未被Paul S. Randal 記錄。

引用自:https://dba.stackexchange.com/questions/183657