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

2024-04-18 02:19:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我们有一个大型SQL生产数据库(~1TB),需要定期对其进行修剪,并保持合理的大小(i、 e.每周修剪最早一周的数据,以便我们始终有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

这样做完全可行吗?或者,是否有“更好”的方法以更有效/更安全的方式完成我正在做的事情


Tags: 数据数据库sql产品过程性能starttimestamp