紧急求助 数据库性能问题 sqlserver2000

kdg2000 2007-08-29 09:52:06
问题描述:
最近这半个月,系统变得特别慢,可能是因为这段时间同时在线的人数增加

服务器硬件描述: HP 4G内存 2个CPU
数据库:Sqlserver2000
目前数据量:7万条
最大同时在线人数:300人左右
数据库当前活动:进程ID数 最大值在460左右(问题可能出在这,进程ID好像只增不减)
CPU总是占到70%左右,大多数是被Sqlserver的进程所占


请各位大虾帮忙分析一下,看看可能是什么原因,根据上面的描述,是否有必要升级服务器呢?

非常紧急,目前公司的这个系统几乎像牛了,在线等,谢谢
...全文
455 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
kdg2000 2007-09-19
  • 打赏
  • 举报
回复
问题已经解决
lovingkiss 2007-08-29
  • 打赏
  • 举报
回复
conn.Close
之后最好conn.dispose的,释放资源。当然这个问题不是很大。

代码的优化是最重要的——但是如果入门级的朋友,大多数自己写的代码,是很难跟踪到问题所在的。
ice_frank 2007-08-29
  • 打赏
  • 举报
回复
数据访问量并不大,数据也不多,不应该有这样的情况;
我想可能是否数据库的设计或查询语句需要优化一下
diablo8848 2007-08-29
  • 打赏
  • 举报
回复
可能是数据库设计问题吧
kdg2000 2007-08-29
  • 打赏
  • 举报
回复
程序中除了正常流程外,还有报表统计,使用的是MS 的ReportServer,针对报表部分写了大概40多个存储过程,有些存储过程中大量的使用了游标,有时一个报表运行起来需要1分多钟

估计这个影响比较大吧?
是不是应该考虑把报表和业务流程分开?数据库分离,然后定期的数据同步?

可是我现在不明白的是,为什么数据库中当前进程ID总是只增不减啊,下班的时候会发现好多进程的开始时间都是早上上班的时候,其中的执行语句是某一个Select查询

但是现在无法肯定数据库慢是跟进程ID数多造成的吧?
kdg2000 2007-08-29
  • 打赏
  • 举报
回复
我的连接数据库操作基本上都是这样写的,应该没有问题吧,,,

using(sqlconnection conn = new sqlConnection("..."))
{
string result="";
try
{
if (conn.State == Connection.Closed)
{
conn.Open();
}

using(SqlDataAdapter da = new SqldataAdapter("sql语句",conn))
{
da.Fill(ds);
}

return ds;
}
catch{ return null; }
finally{ conn.Close(); }
}
zhgroup 2007-08-29
  • 打赏
  • 举报
回复
数据量不是很大,服务器应该可以承受,考虑优化程序代码,检查数据连接是否及时释放,
wuhq030710914 2007-08-29
  • 打赏
  • 举报
回复
帮定一下
zpingy 2007-08-29
  • 打赏
  • 举报
回复
估计是查询的问题,看看SQLSERVER的优化,先把索引搞好......
int64 2007-08-29
  • 打赏
  • 举报
回复
7万条数据,300人在线,是相当小的量,多查查哪里可以优化
int64 2007-08-29
  • 打赏
  • 举报
回复
1、程序中,用到的数据库链接,用完了以后及时关闭
2、数据库中,存储过程是否优化
xwk789xwk 2007-08-29
  • 打赏
  • 举报
回复
学习之中,帮顶一下
dongwei2345 2007-08-29
  • 打赏
  • 举报
回复
哦,忘记了一点
看看你的表是否有使用自链接这种低效率的连接方式或其他低效率的连接方式
最后检查下你软件连接数据库的连接是否有被及时的断开
dongwei2345 2007-08-29
  • 打赏
  • 举报
回复
因该没必要升级啊
1,你可以让SQL2000统计下用户大多访问哪些表,哪些字段,然后给那些字段建立索引
2,看看你的存储过程是不是高效的。
3,检查有没有死锁发生
4,检查是否感染了针对SQL2000的蠕虫病毒
5,检查服务器是否造人入侵
6,从应用程序方面进行优化,比如使用缓存等机制

PS:SQL2000有自带非常强大的分析功能,你可以利用它查看整个系统的状态
lovingkiss 2007-08-29
  • 打赏
  • 举报
回复
进程ID好像只增不减——是不是你的联接,不释放阿?

Conn.dispose....
lovingkiss 2007-08-29
  • 打赏
  • 举报
回复
可以考虑每天午夜,定时重启SQL服务,以达到资源释放的作用;

==================================================================
博客空间:http://blog.csdn.net/lovingkiss
资源下载:http://download.csdn.net/user/lovingkiss
优惠接单开发,组件控件定制开发,成品源代码批发
联系方式:Q64180940 全天在线
==================================================================
kdg2000 2007-08-29
  • 打赏
  • 举报
回复
数据库达人们快来救火啊,,
zhchg6666 2007-08-29
  • 打赏
  • 举报
回复
up
kdg2000 2007-08-29
  • 打赏
  • 举报
回复
当前活动中的 进程ID总是在450左右(最大值时),可是使用人数最多也就300人啊,这是怎么回事?而且察看进程ID的状态,大多数都是sleeping状态,我在代码里的连接数据库都已经及时释放了啊

进程ID数持续 只增不减能是造成数据库慢的原因吗???
郁闷了。。

领导都盯上我了,,
kdg2000 2007-08-29
  • 打赏
  • 举报
回复
另外,不知道大家有人用过ClearQuest没有,我现在的Web系统使用的是它的数据库,而平时的增删改操作都是调用它提供的API进行操作的,只有极少数查询是通过直接使用select访问数据库的

我想说的是,Rational设计的数据库结构应该是没有问题的吧,至于加索引等问题,我没有直接操作它的数据表,只是在自己创建的视图上加了索引

还有,我上面题过的,我的查询操作基本上都是使用的存储过程,但是好多存储过程里因为使用了游标,因此比较慢,有的需要1分多钟才能执行完,那么如果有多人同时执行这个存储过程的话,是不是对数据库的速度也有很大的影响?
加载更多回复(6)

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧