0

我有一个生产中的数据库,我想运行一个 ETL 进程来删除数据库的一些记录(2 亿),但是由于每次我尝试运行 ETL 时数据库都处于 FULL 模型,所以日志文件空间不足。

为了避免我想将恢复模式更改为简单,在完成清理表的过程后,我将再次将恢复模式置于完整模式。

当然,在开始该过程之前,我将备份数据库。

这样做有什么问题,有什么建议吗?

在这方面的任何帮助将不胜感激。

4

2 回答 2

1

来回切换恢复模式是个坏主意。使数据库进入不良状态非常容易,并且很容易使您的数据库备份无效。

第一个选择是获得更多存储空间,以便随着日志的增长,您不会用完空间。有时这说起来容易做起来难,因此您的下一个选择是在 ETL 运行时以设定的时间间隔运行事务日志备份。这将允许提交事务并防止日志文件被填满。这将增加磁盘 I/O,因此性能可能会受到影响。第三个选项(在这些情况下我更喜欢并经常使用的选项)是在恢复设置为SIMPLE. ETL 的最后一步是使用已清理的数据简单地更新生产数据库。

于 2018-05-02T18:03:23.017 回答
0

它与您更新数据的频率以及是否需要恢复到特定时间点有关。例如,如果您的数据库每天填充一次 ETL 批处理,那么您最好将数据库保持在 SIMPLE 恢复模型中,并在批处理完成后执行完整备份或差异备份。

此外,您通常会在 Datawarehouse ETL 过程中执行批量加载,并且由于每个事务都被完全记录,完全恢复可能会影响性能。如果您需要时间点恢复,并且选择了 FULL 恢复模式,那么您可能需要考虑在 ETL 过程期间切换到 Bulk-logged 恢复模式,以便将您的批量操作记录到最低限度。 参考

于 2018-05-02T18:48:49.050 回答