【问题标题】:SQL Server Log Files growing rapidlySQL Server 日志文件快速增长
【发布时间】:2017-09-08 16:11:54
【问题描述】:

我们有 SQL Server 2012(在 Windows Server 2012 R2 上)和为 AlwaysON (01-03) 配置的数据库,我们每天进行一次完整备份,每 5 分钟记录一次备份。数据库大小为 288 GB(mdf - 88 GB,ndf - 110 GB,ldf - 84 GB)。

没有长交易。我将日志文件压缩了两次并购买了 4 GB,但在 2 天内它们又恢复到了 88 GB。

我该如何解决这个问题?

【问题讨论】:

  • SQL Server 2012 RTM 有一个被 MS 承认的错误,导致日志文件在某些​​情况下无故增长很多,至少在简单的恢复模式下是这样。这在 SP2 或 SP3 中已修复,如果您仍在 RTM 或 SP1 中,您可以尝试安装最新的 SP。

标签: sql sql-server sql-server-2012 database-backups alwayson


【解决方案1】:

据我了解,事务日志文件可能增长的一些原因是:

  1. 长时间运行的查询:

    select name, log_reuse_wait_desc 
    from sys.databases  
    

    这应该显示事务日志文件没有释放空间的原因

  2. 优化作业运行,也可能导致事务日志文件增长

  3. 日志备份频率设置不正确 - 有时最好的选择是在任何优化作业运行之前 - 检查日志文件使用情况 - 如果您需要在任何优化作业运行之前设置日志备份

安排适当的日志备份是处理日志增长的最佳方式,除非出现异常情况。

【讨论】:

    【解决方案2】:

    我两次压缩日志文件并购买到 4GB

    由于您能够缩小日志并且日志文件大小减小,因此您看到的日志增长可能是由于事务量大..

    以下是找出哪些事务导致日志增长的方法...

    select 
        txt.text,
        sum(trn.database_transaction_log_bytes_used + 
            trn.database_transaction_log_bytes_reserved) as totallogused 
    from 
        sys.dm_tran_database_transactions trn
    join
        sys.dm_exec_requests ec on ec.transaction_id=trn.transaction_id
    cross apply
        sys.dm_exec_sql_text(EC.sql_handle) txt
    group by 
        txt.text
    

    【讨论】:

    • 在 4 个文本中,我看到更新 SP 正在使用 1001482 totallogused。我怎样才能阻止这种情况?
    • 为什么要停止它..?任何 dml 语句都将使用 log..你需要为你的 log 增长做计划
    • 对规划日志增长有什么建议吗?请
    • 搜索容量规划
    • 好吧,你的意思是应该分配更多的磁盘空间。如果是这样,那么日志正在增长..如果 ldf 文件越来越多,是否可以(现在显示 90GB)。
    猜你喜欢
    • 1970-01-01
    • 2011-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多