[SQL Server] 数据库日志文件自动增长导致连接超时的分析

摘要:
(设置有“超时退出”的客户端程序,此时一般就无法正常连接;数据库程序默认未设“超时”,所以一般会耐心等待日志文件增长完成。)3、结论、解决方案及效果结论:问题发生前,事务日志文件已经达25G,在自动增加10%空间的时候,游戏程序连接时等待超时。

1、现象、问题描述

客户反映某客户端登陆不了,客户端程序日志显示“连接数据库超时”;检查对应的数据库服务器,日志显示“Autogrow of file '某数据库日志文件' in database '某数据库' was cancelled by user or timed out after 2391 milliseconds. Use ALTER DATABASE to set a smaller FILEGROWTH value for this file or to explicitly set a new file size.”

2、关键过程分析

根据数据库日志显示,是数据库事务日志文件已满,在自动增长的时候,连接会话已主动超时断开。

1. SQL Server需要保留以下几种类型的日志

a) 所有没有经过"检查点"的日志记录;(数据库默认1分钟左右做一次检查点)

b) 所有没有提交的事务所产生的日志记录,以及在它们之后的所有日志记录(占用日志较大空间的操作有:基于事务日志的数据库恢复;创建/重建索引;操作大量数据;程序打开了游标却未取走数据);

c) 所有要做备份的日志记录;(非“简单”模式下,日志都被认为是需要备份的)

d) 有其他需要读取日志的数据库功能模块. (事务型复制和数据库镜像,在它们没有读取日志之前,所有日志均保留);

2. 事务日志文件在自动增长空间时,需要将新增加的空间全部“置0”(数据文件默认不需要),期间会产生大量闩锁并使得响应速度变慢。(设置有“超时退出”的客户端程序,此时一般就无法正常连接;数据库程序默认未设“超时”,所以一般会耐心等待日志文件增长完成。)

3、结论、解决方案及效果

结论:问题发生前,事务日志文件已经达25G,在自动增加10%空间(2.5G)的时候,游戏程序连接时等待超时。

解决方法为:

定期清空不需要备份的事务日志(建议在“完全备份/差异备份”执行之前清空日志);

BACKUP LOG 数据库名 WITH WITH NO_LOG

或者将数据库选项设为“简单模式”(SQL 2008仅支持该方法,不支持手动清空日志)

4、经验总结、预防措施和规范建议

数据库的自动增长,建议设定为“**MB”,减少使用“**%”;

对不需要备份日志的数据库,在备份数据库前清空日志,或定期清空;

将每周“日志增长大小”监控,改为每日“日志当前大小及使用率”监控,超过(“5GB和80%时报警”);

5、备注

参考 http://support.microsoft.com/default.aspx?scid=kb;en-us;2091024&sd=rss&spid=2855

http://msdn.microsoft.com/en-us/library/ms175935.aspx

免责声明:文章转载自《[SQL Server] 数据库日志文件自动增长导致连接超时的分析》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇部署的influxdb没有可以web操作sql的页面progressBar的使用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Django文件配置及orm

http协议 -特点:    1 基于TCP/IP协议之上的应用层协议    2 基于请求-响应模式    3 无状态保存    4 无连接 -请求头: 请求首行 get / http/1.1 key:value key:value 请求体的内容 -响...

MySQL 行锁 表锁机制

MySQL 表锁和行锁机制 行锁变表锁,是福还是坑?如果你不清楚MySQL加锁的原理,你会被它整的很惨!不知坑在何方?没事,我来给你们标记几个坑。遇到了可别乱踩。通过本章内容,带你学习MySQL的行锁,表锁,两种锁的优缺点,行锁变表锁的原因,以及开发中需要注意的事项。还在等啥?经验等你来拿! MySQL的存储引擎是从MyISAM到InnoDB,锁从表锁到行...

【SequoiaDB】5 巨杉数据库SequoiaDB基本操作

Sequoia DB巨杉数据库作为分布式数据库,由数据库存储引擎与数据库实例两大模块组成。前面介绍了Sequoia DB巨杉数据库集群的部署以及MySQL实例的安装,下面将继续就以下主题进行介绍。 1 安装目录详解 1.1 SequoiaDB安装目录 SequoiaDB巨杉数据库的默认安装目录为/opt/sequoiadb/,安装完成后可以看到目录如下:...

ORACLE无法删除当前连接用户

今天在做Oracle数据库是遇到ORACLE无法删除当前连接用户,经查找可用如下方法解决 。 在Oracle中删除用户时提示:ORACLE无法删除当前连接用户 可以用以下语句 Sql代码 SQL> select username,sid,serial# from v$session; USERNAME SID SERIAL# ---------...

mysql8.0只能本地连接解决方法

最近,在安装好新版本的mysql后,使用java程序连接出现几个问题,首先是数据库连接url的问题,新的连接url需要加上时区这个参数,例如: jdbc:mysql://127.0.0.1:3306/localmysql?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/...

【转载】只有.dbf数据文件进行数据库恢复

此篇文章为转载,来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26015009/viewspace-714742/ 个人mark下,在之后dbf的情况下,如何不完整恢复,拿出数据。 由于数据库服务器崩溃,造成了无法进入系统进行数据库备份,只能把oracle相关文件拷贝出来。对于拷贝出来的文件在测试机上进行一次不完全恢复,...