日期:2014-05-18  浏览次数:20437 次

SQL2005,一张表里只有三百万不到的数据,为何查询会超时?希望做过大型数据开发的朋友帮个忙,感激.
程序是asp.net 2.0
数据库为SQL2005 SP2.
WEB服务器和数据库服务器分开,
WEB服务器: IBM 至强2.8, 4GB内存
数据库服务器: IBM 双至强2.8 4GB内存

现在的数据库大约有6GB,会员表有三十多万条记录,信息表里记录也只有三百万不到.
可是查询记录表的时候竟然会超时!
数据库的设计和程序设计已是竭尽我所掌握知识规划的最优.所以这个问题我很难想明白.


以下几个细节我想是需要交待的:
一,WEB服务器CPU占用几乎为0,内存占用1GB不到.数据库服务器的内存占用一直保持在3.3GB左右.CPU占用在50%以下起伏.
二,列表数据显示用的是SQL2005的通用分页存储过程,号称千万数量级的.
三,不做关键字词查询,有时还是很正常,每一页都能够快速显示.但大部份时间却会提示超时,就好像有什么东西堵住了,只要通一下,就会正常一样.
但关键字查询的话基本上就超时.另:关键字查询的字段为标题字段,已建有索引.
四,我也不知道怎么说了,三百万的数据我想怎么样也不该是什么大型数据吧,应该能很轻松应付才对,但不知道为何会这样.

希望有经验的朋友能给建议,感激不尽.

------解决方案--------------------
超时时间是多少

300w的话,再复杂的(不要变态的)20秒以内肯定能出来

查询同时是否有增删减操作?
------解决方案--------------------
查询同时是否有增删减操作?
------解决方案--------------------
让系统自动优化下看看

在Management Studio里写下执行慢的语句,然后 查询菜单 - 在数据库引擎优化顾问中查询 ...



------解决方案--------------------
以下几个细节我想是需要交待的:
一,WEB服务器CPU占用几乎为0,内存占用1GB不到.数据库服务器的内存占用一直保持在3.3GB左右.CPU占用在50%以下起伏.
二,列表数据显示用的是SQL2005的通用分页存储过程,号称千万数量级的.
三,不做关键字词查询,有时还是很正常,每一页都能够快速显示.但大部份时间却会提示超时,就好像有什么东西堵住了,只要通一下,就会正常一样.
但关键字查询的话基本上就超时.另:关键字查询的字段为标题字段,已建有索引.
四,我也不知道怎么说了,三百万的数据我想怎么样也不该是什么大型数据吧,应该能很轻松应付才对,但不知道为何会这样.

希望有经验的朋友能给建议,感激不尽.


1.sql server profiler该出场了。
将结果保存到一个表,然后分析,找出耗时的sql语句。
然后优化之

2.用sp_who2 active 查看blkby列是否有值,如果有,比如为15,那么inputbuffer(15),看看是谁堵了数据库

3.DB server使用计数器

4.内存有点小。

------解决方案--------------------

你可以把超时的sql语句直接放到查询分析器里去执行,看看要多久啦

一般都是数据库堵塞造成的。
------解决方案--------------------
回家先[color=#FFFFFF] [/color]
------解决方案--------------------
4gb我觉得不小了,我还拿着搞千万级的东西呢

看情况我认为是你sql语句的问题了
------解决方案--------------------
对象数据源分页,适当缓存.
建好索引.
做好查询优化.
------解决方案--------------------
探讨
4gb我觉得不小了,我还拿着搞千万级的东西呢

看情况我认为是你sql语句的问题了

------解决方案--------------------
select count(*) from nic_purvey 是多少?
select count(*) from nic_purvey where pur_state>0 是多少?
------解决方案--------------------
pur_state有索引吗?
------解决方案--------------------
探讨
还是很莫名,一条很简单的语句select * from nic_purvey where pur_date>'2008-6-17'
有时竟花了二分多钟才罗列出来.我在pur_date上还建了一个聚合索引,有花二分多钟才出现的理由吗?

------解决方案--------------------
重建一下索引,
按照你说的情况,如果是关键字查询,
第一次就会超时,以后就会好转,
估计是你的索引有碎片,
------解决方案--------------------
还有就是增加连接超时,因为第一次查询的时候会编译你的语句,所以耗时会长一些..
------解决方案--------------------
日期上建了聚合索引,然后以日期做为查询条件会有2分钟?
------解决方案--------------------
这表过200W了??
------解决方案--------------------
这样三言两语都能解决问题,除非是碰巧吧
建议叫公司花点银子,请人上门综合诊断

最好是请我,呵呵
------解决方案--------------------
我免费给处理 ~ 可以远程 ~ 免费
------解决方案--------------------