使用ALTER DATABASE解决sqlserver2000的问题

我的问题已解决同意下边的方

原文址:http://community.csdn.net/Expert/TopicView3.asp?id=5276861

问题:
我有个库,里面数据比较多,有的表里面有400万条数据,所在的服务器是在公网上,由于数据比较多这就有个查询的问题,我查询的时候加上某些条件(比如时间、倒叙)都可能要运行10~20多分钟,结果不能马上出来,这时候服务器上的服务器程序可能就表现的不正常,感觉象资源被sql server抢占了,而客户端的程序执行一些查询的话(或在1、2台机器上查询数据库),如果其中1、2个查询不正常,其他的查询也将不正常,具体表现就是如果是客户端就会提示查询超时,我觉得sql server的查询没这么弱吧?!!!我们作的是查询又不是修改,可以对一份数据同时进行,所以这个问题很不明白!希望有经验的能提供帮助,谢谢!


解决共享:
前段时间我在这个版面提出了一个问题,我的数据库总是在运行了一段比较长的时间后不能再向里面插入数据,这时候库里面的某张表可能有120万条记录,然后我就删点记录,服务器程序又能运行啦(先跑起来吧),一小段时间后又出现这样的情况,而且随着删除,此表的记录数量有可能越来越少,有一次慢慢的变成70万就插不进了,我在这也提过问,没有得到解决,通过服务器程序获得代码也令人云里雾里的,某天突然想到事件日志里会不会有什么可以得到帮助的信息,查看

数据库 'DBSERVER' 中文件 'DBSERVER_Data' 的自动增长在 40008 毫秒后已取消或出现超时。
使用 ALTER DATABASE 设置更小的 FILEGROWTH 或设置新的大小。
有关更多信息,请参阅在 http://go.microsoft.com/fwlink/events.asp 的帮助和支持中心。

看了一下ALTER DATABASE的帮助有点晕,后来觉得40008很奇怪,那就是自动增长了很长时间没有反应啦,再一想我的设置数据文件是10%增长的,开始10%可能还正常,但是我那时的数据文件已经有10多个G了,我把设置改成每次5M,问题解决了,最近运行还挺正常的,现在数据文件已经28G了。




----------------------------------------------------------------------------------------------------------------------------
数据库 '%3!' 中文件 '%1!' 的自动增长在 %5! 毫秒后已取消或出现超时。使用 ALTER DATABASE 设置更小的 FILEGROWTH 或设置新的大小。2052

这个问题说明要求数据库立即分配 xx MB 的存储空间用于满足你的处理需求,但数据库在 xx 毫秒无法完成这个分配.

解决的办法:
1. 不要使用自动收缩, 自动收缩会定期收容数据文件的空闲空间,则处理需要的时候却要扩大数据文件,这两者相反的处理,是冲突的
设置方法:
ALTER DATABASE MyDataBase SET AUTO_SHRINK OFF

2. 如果你不进行事务日志备份, 也不需要利用事务日志做处理,则可以将数据库恢复模型设置为SIMPLE, 减少日志记录, 减轻磁盘I/O压力
ALTER DATABASE MyDataBase SET RECOVERY SIMPLE

3. 设置更小的文件增长步骤,以减少每次数据文件分配空间所需要的时间
ALTER DATABASE MyDataBase
MODIFY FILE(
NAME='MyDataBase_Data',
FILEGROWTH=50 MB) --不要使用百分比, 不然数据文件大了的话,这个百分比的结果就很大

4. 为数据文件预先分配足够大的空间,避免数据处理时分配空间
ALTER DATABASE MyDataBase
MODIFY FILE(
NAME='MyDataBase_Data',
SIZE=500 GB) -- 预设数据文件大小为500GB
5. 如果通过上述处理还无法解决问题,则应该考虑你的磁盘I/O性能不行,考虑提高硬件配置.

猜你喜欢

转载自blog.csdn.net/llxsharp/article/details/5221520