在生产中将数据库恢复模型更改为简单
Change the Database recovery model to simple while is in production
我有一个生产中的数据库,我想 运行 一个 ETL 过程来删除数据库的一些记录(2 亿条),但是因为每次我尝试 运行 ETL Logs文件搞定space.
为了避免我想将恢复模型更改为简单,在我完成清理过程后 table 我将再次将恢复置于完整模型中。
当然在开始这个过程之前我会备份数据库。
这样做有什么问题,有什么建议吗??
如能提供这方面的帮助,我们将不胜感激。
来回切换恢复模式不是个好主意。很容易使数据库进入不良状态,并且很容易使您的数据库备份无效。
第一个选择是获取更多存储空间,这样随着日志的增长,您不会 运行 超出 space。有时说起来容易做起来难,所以您的下一个选择是在 ETL 运行 期间 运行 按设定的时间间隔进行事务日志备份。这将允许提交事务,并让您避免日志文件填满。这将增加磁盘 I/O,因此性能可能会受到影响。第三个选项(我更喜欢并在这些情况下经常使用的选项)是在恢复设置为 SIMPLE
的暂存数据库中执行我的所有 ETL 处理。 ETL 的最后一步是简单地用清理后的数据更新生产数据库。
这是关于您更新数据的频率以及是否需要恢复到特定时间点。例如,如果您的数据库每天填充一次 ETL 批处理,那么您最好将数据库保持在 SIMPLE 恢复模型中,并在批处理完成后执行完整或差异备份。
此外,您通常会在 Datawarehouse ETL 过程中执行批量加载,而 FULL 恢复可能会影响性能,因为每个事务都会被完整记录。如果您需要时间点恢复,并且选择了 FULL 恢复模型,那么您可能需要考虑在 ETL 过程期间切换到批量日志恢复模型,这样您的批量操作的日志记录最少。 Reference
我有一个生产中的数据库,我想 运行 一个 ETL 过程来删除数据库的一些记录(2 亿条),但是因为每次我尝试 运行 ETL Logs文件搞定space.
为了避免我想将恢复模型更改为简单,在我完成清理过程后 table 我将再次将恢复置于完整模型中。
当然在开始这个过程之前我会备份数据库。
这样做有什么问题,有什么建议吗??
如能提供这方面的帮助,我们将不胜感激。
来回切换恢复模式不是个好主意。很容易使数据库进入不良状态,并且很容易使您的数据库备份无效。
第一个选择是获取更多存储空间,这样随着日志的增长,您不会 运行 超出 space。有时说起来容易做起来难,所以您的下一个选择是在 ETL 运行 期间 运行 按设定的时间间隔进行事务日志备份。这将允许提交事务,并让您避免日志文件填满。这将增加磁盘 I/O,因此性能可能会受到影响。第三个选项(我更喜欢并在这些情况下经常使用的选项)是在恢复设置为 SIMPLE
的暂存数据库中执行我的所有 ETL 处理。 ETL 的最后一步是简单地用清理后的数据更新生产数据库。
这是关于您更新数据的频率以及是否需要恢复到特定时间点。例如,如果您的数据库每天填充一次 ETL 批处理,那么您最好将数据库保持在 SIMPLE 恢复模型中,并在批处理完成后执行完整或差异备份。
此外,您通常会在 Datawarehouse ETL 过程中执行批量加载,而 FULL 恢复可能会影响性能,因为每个事务都会被完整记录。如果您需要时间点恢复,并且选择了 FULL 恢复模型,那么您可能需要考虑在 ETL 过程期间切换到批量日志恢复模型,这样您的批量操作的日志记录最少。 Reference