从完全恢复数据库中选择时,简单恢复数据库是否记录事务日志?

时间:2014-02-02 14:19:50

标签: sql sql-server database transactions

从完全恢复数据库中选择时,简单恢复数据库是否记录事务日志?我的意思是,我们有一个完全恢复的数据库,它记录了太多的事务日志,导致其大小增长。

我的问题是,即使从完全恢复模型数据库中选择数据,简单恢复是否仍然具有最小日志记录?谢谢!

2 个答案:

答案 0 :(得分:1)

有一件事与另一件事无关。数据的来源不会影响对数据库中表的更改的记录。

然而,正如马丁史密斯指出这是解决一个症状,如果你(他们??)没有足够频繁地备份事务日志以使开销有用,那么完全恢复模式就没有了。除了在您的应用程序中发生某些灾难时恢复特定事务之外,它们的全部意义在于速度和粒度。

答案 1 :(得分:1)

请阅读恢复模型的MSDN页面。

http://msdn.microsoft.com/en-us/library/ms189275.aspx

以下是MSDN的快速摘要。

1 - Simple model - Automatically reclaims log space to keep space requirements small,
essentially eliminating the need to manage the transaction log space

2 - Bulk Copy model - 

An adjunct of the full recovery model that permits high-performance 
bulk copy operations.

**The first two do not support point in time recovery!**

3 - Full model - Can recover to an arbitrary point in time 
(for example, prior to application or user error). 
If no tail log backup possible, recover to last log backup.

所以你的问题是日志使用或日志备份。

A - 您是从临时表中删除而不是截断? http://msdn.microsoft.com/en-us/library/ms177570.aspx删除操作将记录事务日志中的每一行。

B - 您是否通过ETL作业插入大量数据?每个插入都将记录在T-Log中。

如果您使用支持(快速数据加载)的批量复制和ETL,则会将其记录得最少。 但是,在确定T-LOG的大小时,页面密度和填充因子会起作用。

http://blogs.msdn.com/b/sqlserverfaq/archive/2011/01/07/using-bulk-logged-recovery-model-for-bulk-operations-will-reduce-the-size-of-transaction-log-backups-myths-and-truths.aspx

C - 您多久进行一次事务日志备份?每次备份后,可以重复使用T-LOG空间。导致整体尺寸变小。

D - T-LOG有多碎片?我建议在维护期间减少并重新生成日志。每小时备份20%的日志数据比率在我的旧公司工作正常。这一切都取决于你做了多少改变。 http://craftydba.com/?p=3374

总之,这些是您应该关注的地方。不是系统中的旧数据,因为它可能没有被修改。

将旧数据移动到只读报告数据库,以便新手T-SQL用户的ADHOC查询可能不是一个坏主意。但这解决了其他问题,可能是OLTP数据库中的BLOCKING和DEADLOCKS。