【问题标题】:Transaction Log remains 60GB size, even after changing to Full Recovery即使更改为完全恢复,事务日志仍保持 60GB 大小
【发布时间】:2018-03-16 21:56:56
【问题描述】:

刚开始与一家公司合作,发现他们的数据库设置为简单恢复。

我与所有者交谈并建议将其转换为完全恢复,向他解释使用事务日志的好处并每小时备份一次。在他同意之后,我在转换之前做了一个完整的数据库备份。然后为事务日志文件安排每小时备份,为数据文件安排每晚完整备份。

我的印象是,一旦开始运行每小时备份,事务日志的大小 (60GB) 就会缩小。一个多月了,事务日志的大小还是一样。

可以在不分离和附加数据库的情况下对日志文件运行DBCC ShrinkDB 吗?

【问题讨论】:

标签: sql-server database-backups transaction-log


【解决方案1】:

我的印象是,一旦每小时备份开始运行 Tlog 的大小,60GB 将开始缩小。一个多月了,Tlog的大小还是一样。

日志文件不会自动收缩

可以针对 Tlog 运行 DBCC ShrinkDB

不要收缩日志文件,除非你空间不足。这背后的原因是,文件增长操作很昂贵

您可以通过以下命令查看日志文件中的可用空间

dbcc sqlperf('logspace')

【讨论】:

  • 非常感谢您的回复,我运行了 dbcc sqlperf ('logspace'),结果如下... DatabaseName LogSize = 61023.37 Log Space Used = 0.4820387。我的 Tlog 平均每天运行 38MB。根据我阅读的内容,最好将我的数据库转换回简单的并运行任务以收缩文件。一旦尺寸缩小,我可以将其恢复为 FULL .. 那是我可以使用的东西吗?
  • 是的,你也可以这样做。但是请记住它会破坏日志链
  • 非常感谢
【解决方案2】:

您进行的日志备份将有助于防止日志文件增长,但日志文件不会自行缩小。在内部,日志文件被分割成虚拟日志文件 (VLF),并以(或多或少)循环方式使用。在您运行工作负载时,事务被记录到这些 VLF 中。当日志备份运行时,它将读取自上次日志备份以来有事务的任何 VLF,将这些事务写入磁盘,然后清除 VLF 并将其标记为可重用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-03
    相关资源
    最近更新 更多