在SQL Server中清除数百万数据的最佳方法

时间:2016-06-21 15:15:55

标签: sql sql-server sql-job

我在过去5年的SQL Server中有大约100亿个系统(基础设施)数据,我想在每个周末逐步清除这些数据,同时还运行其他工作,这些工作正在进行维护并插入数据特定的一天进入warehouse

清除过程将每周末删除约600,000条记录,但它会扫描整个数据仓库,以便取出这600,000条记录。

请提出最佳方法。

2 个答案:

答案 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,则应确保使用您用于识别要删除的记录的字段编制索引。对于大删除,打破删除可以提高性能,因此您可能创建一个循环,一次删除1天,7次,而不是一次删除整个星期。

答案 1 :(得分:0)

我会采用文章中提到的增量方法:

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

每个批次要删除的记录数是可配置的。您希望在测试环境中测试不同的大小,以获得数据集的最佳大小。