问题:偶尔遇到数据库连接超时,要重启数据库服务器才正常。
分析及解决:如果遇到这种情况,检查一下SQL Server的日志,看看是否有这样的报错:
如果有上面这个错误,那就是数据库的参数配置不当造成的。我们新建数据库时,默认是下图这样的配置:
这两处配置在数据库小的时候,没有什么问题,但当数据库非常大时,就有问题了:
1、恢复模式配置成“完整模式”会导致数据库日志文件会非常非常大,可能有几十甚至几百GB。所以应该改成“简单”。
2、数据库的数据文件“增量大小为1MB”,太小了,会导致SQL频繁的对数据文件进行扩容。应该改成“增量为64MB,增长无限制”。
3、数据库的日志文件“增量大小为10%,限制大小”,这就是SQL日志中报错的根源。因为日志文件非常大时(几GB甚至几十GB),一次扩容就会要扩容几百MB,而磁盘写入的性能一般才每秒几十MB,从而会导致扩容超时。试多几次一直报错,就会整个崩掉。正确的配置应该是“增量为64MB,增长无限制”。
配置成“增量为64MB,增长无限制”的原因,是因为64MB是一个比较适合的数值,因为磁盘写入性能一般才几十MB,64MB的大小基本上是1秒钟左右可以写入,所以不会导到超时,而一次扩容后,可以坚持一个小时到一天。