我们每天将大约100万条记录写入sql server表.
记录有一个insertdate和status字段,当然还有其他字段.
我需要不时删除记录以释放卷上的空间,但留下最后4天的记录.
问题是删除需要数小时和大量资源.
我考虑过在insertdate上设置分区字段的分区表,但我从未使用过那种表.
如何使用较少的CPU /磁盘资源实现目标,并使解决方案可能的缺点较少? (我认为任何解决方案都有其自身的缺点,但如果您知道,请解释它们).
最佳答案 您可以采取两种方法来加快删除速度.一种是一次删除10000行,因此事务日志不会增长到庞大的大小.基于某些逻辑,您将删除前10000行,直到所有行满足条件为止.根据您的系统,这可以将删除速度提高100倍.
另一种方法是在表上创建一个分区.你必须创建一个分区模式和功能,如果你要删除的所有行都在一个分区中,让我们说一天的销售,那么删除分区将删除元操作中的所有行,它只需要几个要做的几秒钟.分区并不难,但你必须花一些时间来正确设置滚动窗口.它超过一小时但不到一周.