管理大型生产SQL数据库的删除

时间:2018-03-05 15:02:03

标签: python sql sql-server stored-procedures pyodbc

我们有一个大型SQL生产数据库(~1TB)需要定期修剪并保持合理的大小。 (即每周修剪最早的一周数据,因此我们一直有X周的数据)但是,这个数据库非常活跃,任何大型SQL操作都会破坏我们产品的性能。我已经用一个小的pyodbc包装器编写了一个存储过程,以便将块删除到较小的,可管理的操作中。

ALTER PROCEDURE [dbo].[PurgeTickerHistory]
@Start bigint = 0, 
@End bigint = 0,
@ChunkSize int = 10000
AS
BEGIN
SET NOCOUNT ON;
declare @r int = 1;


while @r > 0
begin
    delete top(@ChunkSize)
        from dbo.TickerHistory
        where [Timestamp] < @Start and [Timestamp] > @End

    set @r = @@ROWCOUNT
end

end

这是一个完全可行的方法吗?或者,是否有更好的&#39;如何以更有效/更安全的方式完成我的工作?

1 个答案:

答案 0 :(得分:0)

是的,这完全可行。我们在现在的商店做了类似的事情,而我之前的两个(自2005年开始提供Windows功能)。