2014-03-31 48 views
1

我有一個SQL Server數據庫。大小約爲150GB,可以節省一些數據以供分析。每天都有新的數據進入,我們需要刪除舊數據(基於日期)。最近,日常數據量增加很多,不久將達到每天8-9GB左右。如何更快速地刪除大型SQL Server中的數據?

目前,我們刪除在小批量,這需要很長的時間才能完成。是否有一個通用指南來加快速度?嘗試刪除/禁用索引之前刪除,刪除完成後,然後重建索引。它沒有多大幫助。

或者,這將完全取決於實際日期?

謝謝

+0

這不是你的只是更多的信息回答: truncate table要在功能上等同於DELETE語句與沒有WHERE子句:既消除在table.But TRUNCATE表中所有行速度更快,使用較少的系統和事務日誌資源比DELETE DELETE語句一次刪除一行,並在事務日誌中記錄每個刪除行的條目。截斷表通過重新分配用於存儲表數據的數據頁刪除數據,只有頁面解除被記錄在事務日誌 http://msdn.microsoft.com/en-us/library/aa260621(SQL.80 ).aspx – RezaRahmati

+0

如果您能提供更具體的信息,我們可以爲您提供更多幫助。具體來說,您正在使用的命令刪除查詢計劃(實際)。 – RBarryYoung

回答

2

鑑於數據量我會使用分區表,每天一個。

交換分區和退出將是刪除所有數據爲一天的最快方式。

編輯:因爲截斷分區並不像它應該在SQL Server中那麼簡單,所以我想我會提供更多的細節,以防你不熟悉分區。

在SQL Server的下一個版本,你應該能夠只是TRUNCATE PARTITION或類似的東西。在此期間,你必須進行如下操作:

刪除數據每天在你的數據庫的最快方法是已經表一天後,分配:

  1. 換出的分區,你想要刪除到另一個表格:ALTER TABLE partitioned SWAP PARTITION n TO otherTableToDelete

  2. TRUNCATE TABLE otherTableToDelete