gpt4 book ai didi

sql-server - 如何从 Azure 数据库中删除数百万行?

转载 作者:行者123 更新时间:2023-12-03 01:19:19 24 4
gpt4 key购买 nike

我现在面临的问题是,我必须从 Azure Microsoft SQL 数据库中删除超过 9000 万行,而且我不能简单地删除表并重建一个新表。

这就是我正在使用的代码

DECLARE @NRO INT = 0; 
WHILE 1 = 1
BEGIN
SET @NRO = @NRO + 1;
PRINT CONCAT(@NRO * 2000, ' ROWS DELETED.')

DELETE TOP(2000)
FROM AuditDetail
WHERE Id < 25000000;

IF @@ROWCOUNT < 2000
BREAK;
END

我尝试使用Azure Runbook来完成这项工作,但它只能让我运行SQL脚本9个小时,即使我将超时时间设置为超过24小时。

我的问题:如何正确设置 Runbook 以按照我的意愿运行脚本,或者是否有其他方法来完成工作?我尝试过使用检查点,但没有成功,我可能做错了:(

谢谢。

最佳答案

鉴于您的限制,您走在正确的道路上。

我还建议在监视 Azure SQL 指标边栏选项卡中的相关指标时调整批处理大小。如果一次 2k 记录的批处理大小甚至不会对 CPU 或内存造成影响,请考虑停止查询并增加批处理大小。

您还可以根据您的 SKU 考虑扩大规模。如果您使用 vCore 或超大规模 SKU,您将能够通过扩展内核数量来加快速度,然后在所有删除操作完成后缩小它们。

如果您真的不愿意承担风险,没有法律障碍,并且您有预算这样做,那么还需要考虑一件事。您可以创建产品数据库的副本来进行实验。就像连接到主数据库并执行“创建数据库 X 作为 Y 的副本”一样简单。这样做不会影响数据库的性能。然后您可以在这个产品副本上进行实验。

关于sql-server - 如何从 Azure 数据库中删除数百万行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72413380/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com