Azure sql database 删除azure SQL表中的大数据将增加数据库数据存储

Azure sql database 删除azure SQL表中的大数据将增加数据库数据存储,azure-sql-database,azure-storage,Azure Sql Database,Azure Storage,我试图使用delete命令从Azure SQL表中删除大数据,但删除数据时,数据库数据存储将增加。我如何才能停止这一点,或者Azure中是否有任何选项可以最小化事务日志 我不想使用truncate,因为我不需要删除表中的所有数据 delete top(10000) from Crumbs where CrumbId <= @maxId and TenantId =@tenantId 删除顶部(10000) 面包屑 其中CrumbId通常您会将数据库的恢复模式更改为S

我试图使用delete命令从Azure SQL表中删除大数据,但删除数据时,数据库数据存储将增加。我如何才能停止这一点,或者Azure中是否有任何选项可以最小化事务日志

我不想使用truncate,因为我不需要删除表中的所有数据

 delete top(10000)
 from Crumbs
 where CrumbId <= @maxId and 
       TenantId =@tenantId
删除顶部(10000)
面包屑

其中CrumbId通常您会将数据库的恢复模式更改为SIMPLE

Azure Sql数据库有点不同: 在这种情况下,SQL数据库引擎每5-10分钟执行一次事务日志备份—它也会自动收缩


如果希望完全控制数据库实例,可以选择运行SQL Server管理的实例或安装了SQL Server的VM。

通常,您会将数据库的恢复模式更改为“简单”

Azure Sql数据库有点不同: 在这种情况下,SQL数据库引擎每5-10分钟执行一次事务日志备份—它也会自动收缩


如果您希望完全控制数据库实例,可以选择运行SQL Server托管实例或安装了SQL Server的VM。

请参阅此博客:

如果您不想使用truncate,M.Ali会为您提供另一个选项:

  • 将数据库的恢复模式更改为“简单”
  • 使用while循环删除较小批次中的行
  • 例如:

    DECLARE @Deleted_Rows INT;
    SET @Deleted_Rows = 1;
    
    
    WHILE (@Deleted_Rows > 0)
      BEGIN
       -- Delete some small number of rows at a time
         DELETE TOP (10000)  Crumbs
         WHERE CrumbId < <= @maxId and
               TenantId =@tenantId
      SET @Deleted_Rows = @@ROWCOUNT;
    END
    
    声明@Deleted\u行INT;
    设置@Deleted_Rows=1;
    而(@Deleted_Rows>0)
    开始
    --一次删除少量行
    删除顶部(10000)个碎屑
    
    其中CrumbId<请参考此博客:

    如果您不想使用truncate,M.Ali会为您提供另一个选项:

  • 将数据库的恢复模式更改为“简单”
  • 使用while循环删除较小批次中的行
  • 例如:

    DECLARE @Deleted_Rows INT;
    SET @Deleted_Rows = 1;
    
    
    WHILE (@Deleted_Rows > 0)
      BEGIN
       -- Delete some small number of rows at a time
         DELETE TOP (10000)  Crumbs
         WHERE CrumbId < <= @maxId and
               TenantId =@tenantId
      SET @Deleted_Rows = @@ROWCOUNT;
    END
    
    声明@Deleted\u行INT;
    设置@Deleted_Rows=1;
    而(@Deleted_Rows>0)
    开始
    --一次删除少量行
    删除顶部(10000)个碎屑
    
    其中CrumbId<根据您的表和要删除的记录,您有几个选项:

    • 您希望保留的数据与删除的数据的比例是多少?如果你的意图是删除比你想保留的更多的数据,考虑把数据保存到一个新的表中,然后删除旧的表。
    • 如果您的表是分区的,那么您可以在分区的基础上应用上述方法,并根据需要切换分区
    • 数据库大小由日志和数据文件组成,如果删除不连续的数据块,索引将被分割,因此在这两者之间会丢失大量空间(页面分割等)。完成删除后,请在索引上运行“重建”或“重新组织”以清理此空间
    • 重建/重新组织后,使用强制清理日志和预先分配的数据空间。请注意,由于数据库和日志文件需要再次增长,因此在重新启动负载时可能会受到较小的性能影响

    根据您的表和要删除的记录,您有几个选项:

    • 您希望保留的数据与删除的数据的比例是多少?如果你的意图是删除比你想保留的更多的数据,考虑把数据保存到一个新的表中,然后删除旧的表。
    • 如果您的表是分区的,那么您可以在分区的基础上应用上述方法,并根据需要切换分区
    • 数据库大小由日志和数据文件组成,如果删除不连续的数据块,索引将被分割,因此在这两者之间会丢失大量空间(页面分割等)。完成删除后,请在索引上运行“重建”或“重新组织”以清理此空间
    • 重建/重新组织后,使用强制清理日志和预先分配的数据空间。请注意,由于数据库和日志文件需要再次增长,因此在重新启动负载时可能会受到较小的性能影响

    无法将恢复模式更改为简单,因为它是Azure DB,此代码将增加数据库数据存储。无法将恢复模式更改为简单,因为它是Azure DB,此代码将增加数据库数据存储