SQL Server 批量删除

FIr*_*nda 4 sql-server

我不得不600K每天从表中删除周围的记录。我面临的问题是,每当删除发生时,日志数据库大小增加到1 GB. 即使在删除操作完成后,日志数据库大小也不会缩小到正常大小。这是一个问题,因为日志数据库大小1 GB每天都在增加。

我不能使用,truncate因为要删除的表正在被其他表引用。

Bre*_*zar 13

当你执行一个事务时——比如一次删除 600K 条记录——SQL Server 必须在它工作时在事务日志文件中记录它所做的事情。

假设该过程需要 5 分钟,进入 4 分钟后,服务器出于某种原因重新启动。SQL Server 启动,打开日志文件,然后需要撤消所有工作(因为事务从未提交。

为避免日志文件过大,您可以:

  • 在较小的交易中完成您的工作 - 例如批量工作
  • 将您的数据库置于简单的恢复模型中(以便在提交事务后立即可以重用事务日志空间),或
  • 如果您处于完全恢复模式,请经常备份您的事务日志,甚至可能每分钟备份一次- 因为空间仅在备份后才标记为可重用