关于sql server响应慢的问题,敬请邹建大侠解答

puzzy 2008-03-09 09:06:40
我们的服务器hp服务器,具体型号忘了。2个4核cpu,4G内存。磁盘阵列RAID5,可用空间2T。
sql server2000 enterprise ,sp4.
现有一数据库,目前大小约250G,数据文件由5个50G大小的文件构成,最大的表有3亿多条记录,不到20个用户。大部分表
字段都做了索引,一般情况下减缩速度很快。这几天在使用中发现,一些用户在查询时,其他用户常常会出现服务器响应速度非常慢的情况。有时服务器很久都没有响应,请教高手告知可能会是那些原因造成该情况。谢谢!!
...全文
431 点赞 收藏 13
写回复
13 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Neil2013 2012-08-06
没收获
回复
ctoygl 2008-03-11
没收获
回复
w2jc 2008-03-10
SQL Server做小应用比较方便,入门容易,但并不代表就只适合做小应用。

像LZ这种系统算有点规模了,多CPU,磁盘阵列都有。这种硬件配置就不能使用默认的那些SQL Server配置,
默认的SQL Server配置参数只适合大多数情况。

你有2个4核CPU,算是8个核,那么要为tempdb建8个数据文件(data file),默认只有1个数据文件。
这个在多核系统里面非常重要,各个CPU才能同时使用不同的数据文件去操作tempdb,否则就只有排队等。
关键是8个数据文件大小必须一样。细节参看:http://support.microsoft.com/kb/328551/zh-cn

上面设置最大并行度为1的部分,你可以参看:http://support.microsoft.com/kb/329204/zh-cn

4G的内存感觉小了点,但也不一定,需要看具体情况。
如果上面的这些优化措施都到位了,内存使用仍然持续在70%以上的话,
应该考虑增加内存。

另外,为了防止SQL服务占用过多系统内存,应该设置最大可使用内存为3.4G左右,
为操作系统至少保留600M内存。参看:
如何配置 SQL Server 以便使用 2 GB 以上的物理内存
http://support.microsoft.com/kb/274750/zh-cn

=========================================================
看LZ的硬件配置和用户连接数,如果上面的这些优化措施都到位,应该能够解决遇到的问题。
回复
-狙击手- 2008-03-10
1、索引
2、分区表,创次要文件
3、再分析相应的查询语句
回复
w2jc 2008-03-10
我们的服务器hp服务器,具体型号忘了。2个4核cpu,4G内存。磁盘阵列RAID5,可用空间2T。
sql server2000 enterprise ,sp4. 不到20个用户。
------------------------------------------
和我们现在的一个系统的配置比较接近,我们最多有140个并发用户。

解决性能问题的关键是确定瓶颈在哪里,最容易造成瓶颈的顺序是:
磁盘I/O > CPU > RAM > 用户连接数 > 网络带宽

所以,你可以按上面的顺序去查看瓶颈可能存在的地方。

对于这么大的数据库,有些地方要注意一下:
2) 定期重建索引(对于这种大数据库,重建索引前把日志模式转到 bulk_logged,完成后再改回 full)
3) 避免收缩数据库 (如果数据库在用户查询繁忙时扩大,就会非常忙,这都可能是你遇到的问题的原因)
如果可能,最好事先扩大数据库,重建索引通常会导致日志文件暴涨(参考第2点)
1) 定期 DBCC CHECKDB
4) 定期重启SQL服务,比如每1个月,每2周或1周重启一次(这个很容易被忽略,但非常有效)

另外还有一点比较容易被忽略,
如果你的系统是事务处理和报表查询混合在一起的,即
同时有很多用户更新数据,也有用户运行一些复杂的报表。
那么,建议把你SQL Server的最大查询并行度改为1,默认为0,
当有个用户运行一个很复杂的查询时,SQL Server 会把4个处理器都用去处理这个查询,其他用户就慢得多了。
如果并行度改为1,SQL Server 总是用1个处理器去处理一个查询。

回复
zjcxc 元老 2008-03-10
服务器配置太低了点

特别是内存, 一般这样的数据量少说也得 8 G 才好, 4 G 太低了
回复
fcuandy 2008-03-09
..
回复
bootupnow 2008-03-09
重建索引,看能否跟踪到具体的查询语句,依据条件来优化。
期待2008,hoho~
回复
kelph 2008-03-09
建议升级2005,性能会有相当的提升。
内存可以再搞大点;表太大的要做分区表;检查索引是否合理;优化查询;
注意监测相应速度非常慢和长时间没有反应时的系统情况,有针对性进行分析和优化。
回复
jinjazz 2008-03-09
建议升级sql2005使用分区表,另外楼主需要检查查询是否合理,比如是否有严重的cpu负载或者严重的io等待等等
回复
dawugui 2008-03-09
目前大小约250G,数据文件由5个50G大小的文件构成,最大的表有3亿多条记录

好象已经回复过,SQL SERVER处理这么大的数据量的话,太难为他了.

建议改用oracle9i,oracle10g
回复
wzy_love_sly 2008-03-09
重新维护索引?等钻石
回复
luoqun_ncs 2008-03-09
ABCD
回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2008-03-09 09:06
社区公告
暂无公告