一个在线系统,一旦涌入大量写,SQL Server很快就会停止响应,根据DMV查看资源等待情况,发现大量LATCH_EX,等待资源则是LOG_MANAGER。检查日志发现已经是超过400G,系统初始化时已经使用了256个日志文件,总共64G日志,感觉日志部分可能不受控制,所以把数据库日志还原模型改成SIMPLE,立刻问题解决了。
分析原因应该是日志写满后,SQL Server向操作系统申请更多磁盘空间造成的磁盘IO,期间造成了写日志等待。
不过还是觉得有点奇怪,一个表峰值写入大概不到10,000条记录每秒,同时另一个表做更新或写入不足10,000记录,表结构比较简单,10-20个字节一条记录,为什么造成这么大的日志?