在生产中将数据库恢复模型更改为简单模型

时间:2018-05-02 17:53:54

标签: sql sql-server sql-server-2008 sql-delete recoverymodel

我有一个正在生产的数据库,我想运行一个ETL进程来删除数据库的一些记录(2亿),但由于每次我尝试运行ETL时数据库都处于FULL模型,Logs文件就会出来太空了。

为了避免这种情况,我想将恢复模型更改为简单,在完成清理表的过程之后,我将再次将恢复设置为完整模型。

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

有任何问题,做任何建议吗?

非常感谢在这方面的任何帮助。

2 个答案:

答案 0 :(得分:1)

来回切换恢复模型是一个坏主意。将数据库置于错误状态非常容易,并且很容易使数据库备份无效。

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

答案 1 :(得分:0)

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

此外,您通常会在Datawarehouse ETL过程中执行批量加载,并且由于每个事务都已完全记录,因此完全恢复可能会影响性能。如果您需要时间点恢复,并选择了完整恢复模型,那么您可能需要考虑在ETL过程期间切换到批量记录恢复模型,以便最大限度地记录批量操作。 Reference