2016-06-21 178 views
1

過去5年我在SQL Server中有大約100億系統(基礎結構)數據,並且我想在每個週末增量清除該數據,同時其他正在運行的其他作業維護並將該特定日期的數據插入warehouse在SQL Server中清除數百萬數據的最佳方法

清除過程每週末將刪除大約600,000條記錄,但它會掃描整個數據倉庫以取出這600,000條記錄。

請建議一個這樣做的最佳方式。

+0

您是根據日期清除記錄嗎? –

+0

這是分區的用途(或者至少有一個使用它們的原因) – Jamiec

+0

這可能是最好的,如果該表將被分區。然後每個星期一個腳本爲下一週創建一個新的分區,並刪除過時的分區。 – LukStorms

回答

0

在文章中提到我會採取漸進的方法:

http://sqlperformance.com/2013/03/io-subsystem/chunk-deletes

記錄每批刪除的號碼是可配置的。您需要在測試環境中測試不同的大小以獲得數據集的最佳大小。

+0

還需要照顧日誌文件的大小,如果我們一次性批量刪除記錄它將完整的轉錄日誌表。 –

+0

確實。您多久進行一次事務日誌備份? –

1

SQL Server中的分區切換使您能夠立即交換表中數據的大塊數據。有很多好的教程,這裏有一個:https://www.brentozar.com/archive/2013/01/sql-server-table-partitioning-tutorial-videos-and-scripts/

SQL Server中的分區根據分區方案物理分隔表,最常用的是日期範圍。因此,將分區換入/換出表格更像是一個邏輯交換機,而不是物理交換機,因此速度非常快。

如果您沒有SQL Server Enterprise Edition,則應確保您用於標識要刪除記錄的字段已建立索引。在刪除大量數據後,打破刪除可以提高性能,因此您可能會創建一個循環,一次刪除7天,而不是整個星期一次。

相關問題