SQL Server 日志文件快速增长
Posted
技术标签:
【中文标题】SQL Server 日志文件快速增长【英文标题】:SQL Server Log Files growing rapidly 【发布时间】: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。 【参考方案1】:据我了解,事务日志文件可能增长的一些原因是:
长时间运行的查询:
select name, log_reuse_wait_desc
from sys.databases
这应该显示事务日志文件没有释放空间的原因
优化作业运行,也可能导致事务日志文件增长
日志备份频率设置不正确 - 有时最好的选择是在任何优化作业运行之前 - 检查日志文件使用情况 - 如果您需要在任何优化作业运行之前设置日志备份
安排适当的日志备份是处理日志增长的最佳方式,除非出现异常情况。
【讨论】:
【参考方案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)。以上是关于SQL Server 日志文件快速增长的主要内容,如果未能解决你的问题,请参考以下文章
sql server 2008 的事务日志文件存储数据库的啥情况