繁体   English   中英

SQL事务日志增长

[英]SQL Transaction log growth

我的事务日志文件每天都在增长到非常大的范围。

这是我的一些存储过程以及如何进行插入可能会产生问题的方式吗?

有没有办法通过重写查询来最小化日志大小?

查询中是否存在导致日志大小增长更快的内容?

当日志文件变大时,需要考虑各种因素。 我会遵循逐步明智的清单

1)查找影响较大的查询,使用以下SQL

SELECT TOP 5 t.TEXT AS 'SQL Text'
    ,st.execution_count
    ,ISNULL(st.total_elapsed_time / st.execution_count, 0) AS 'AVG Excecution Time'
    ,st.total_worker_time / st.execution_count AS 'AVG Worker Time'
    ,st.total_worker_time
    ,st.max_logical_reads
    ,st.max_logical_writes
    ,st.creation_time
    ,ISNULL(st.execution_count / DATEDIFF(second, st.creation_time, getdate()), 0) AS 'Calls Per Second'
FROM sys.dm_exec_query_stats st
CROSS APPLY sys.dm_exec_sql_text(st.sql_handle) t
ORDER BY st.total_elapsed_time DESC

2)一旦你知道逻辑读/写,你可以跟踪sp或查询的影响优化它。

3)你总是可以缩小日志文件,但我会说缩小日志文件中的注意事项(Prod环境,执行时间,对其他用户的影响)

4)如果你认为它对收缩日志文件的影响微乎其微,请使用这个sql DBCC SHRINKFILE (N'My DB_Log' , 1000)请检查日志文件大小,我不会缩小到1.阅读此博客了解更多信息DBCC SHRINKFILE即使在BACKUP LOG TO DISK之后,日志文件也没有减小大小

您尚未提及备份策略或恢复要求。 如果您真的不需要能够及时恢复ta并且能够恢复到常规备份点,那么您也可以考虑将恢复模式设置为简单。

可能在大多数情况下都不推荐,但这是可能的。

如果你确实需要详细的日志,那么正如其他人所说,你需要平衡你的tlog备份和文件增长。 如果日志文件过大,过快,请更频繁地备份。

来自RedGate的文章: https ://www.simple-talk.com/sql/learn-sql-server/managing-transaction-logs-in-sql-server/

除非有充分的理由,否则请不要收缩事务日志文件。 如果TLog每天都在增长,那么您应该做的第一件事就是增加TLog备份的频率。 如果您仍然看到TLog每天都在增长,则可能会遇到一个问题,导致vlog标头无法回到文件头部。 这通常表现为运行DBCC LOGINFO返回的初始记录,状态为2,后跟大量状态为0的记录。要解决此问题,您可以在此处引用我对类似DBA.SE问题的回答。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM