sql server日志处理不当造成的隐患详解

发布时间:2022-04-18 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了sql server日志处理不当造成的隐患详解脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

事故背景:一大早还在路上,群里陆续有人反馈系统一直报错 “ Unknown error 258 ”,后来查询日志发现错误日志

第一反应是不是数据库连接不够用了?导致超时?但是通过SQL查询当时连接也只有40个左右,于是继续排查问题,发现dbserver机器这段时间磁盘io操作特别的高,很不正常,详见下图


发现磁盘io问题,继续查看sqlserver日志,发现原因: “Autogrow of file ‘xxxx_LOG' in database ‘xxxx' was cancelled by user or timed out after 3398 milliseconds.  Use ALTER DATABASE to set a smaller FILEGROWTH value for this file or to explicITly set a new file size.”


发现这种问题因为log日志文件太大了一直没有压缩过,并且创建数据库的时候默认选择了10%的增量来扩大log增量文件,这样日志文件的10%会越来越大从而产生超时高io操作

解决方案

1、定期清理log文件,止log文件越来越大

 USE [master]
 GO
 ALTER DATABASE 数据库名 SET RECOVERY SIMPLE WITH NO_WaiT
 GO
 ALTER DATABASE 数据库名 SET RECOVERY SIMPLE
 GO
 USE 数据库名
 GO
 DBCC ShrINKFILE (N'数据库名_Log' , 11, TRUNCATEONLY) 
 GO
 USE [master]
 GO
 ALTER DATABASE 数据库名 SET RECOVERY FULL WITH NO_WAIT
 GO
 ALTER DATABASE 数据库名 SET RECOVERY FULL
 GO 

2、修改默认数据库log增量10% 为 500M(看具体情况,一般够了)

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本宝典的支持。

脚本宝典总结

以上是脚本宝典为你收集整理的sql server日志处理不当造成的隐患详解全部内容,希望文章能够帮你解决sql server日志处理不当造成的隐患详解所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。