一个aspdotnet网站的速度很慢,是什么原因造成的??我分析了一下,再请高手给指导指导
是个门户网站,用户注册的数量很多,但是搜索速度很慢!容易出错!
我看了代码,每次操作数据库,尤其就是读取数据的时候,也用输出参数,调用存储过程,我知道用SqlDataReader是速度很快的,我觉得没有必要的地方,就不用输出参数,而用datareader,而且表的搜索关键字段,没有建立索引,这么会影响速度吗?
还有就是每次操作数据库完成之后,都要这么写 conn.Close() conn.Dispose()cmd.Dispose() adap.Dispose()
我觉得这样做,倒浪费服务器资源,因为大部分应用都是一个连接,应该放到连接池里,不要每次操作结束后,就销毁,这样反而浪费资源,因为dotnet framework 是智能的
我觉得这是影响我们这个网站的原因!~~不知道对不对
请大家赐教!!谢谢~~
问题点数:20、回复次数:15Top
1 楼hahaclj(火星人.NET)回复于 2006-06-02 16:55:20 得分 0
顶一下,高手赶紧回答我~~
我迫切的想知道~~
谢谢
祝福csdn的兄弟们周末愉快!!Top
2 楼hahaclj(火星人.NET)回复于 2006-06-02 17:11:14 得分 0
靠靠的 怎么都沉了亚
我顶~~!!顶!Top
3 楼truelove12(结贴者寥寥无几,心寒ing...)回复于 2006-06-02 17:14:12 得分 0
conn.dispose方法会显式的调用conn.close(),所以使用conn.dispose就可以了
如果conn对象不销毁掉,服务器会一直保持这个链接,这样才会浪费服务器的资源。
你说的连接池,默认情况下就是打开的。
另外,将conn字符串写入web.config中,每次都使用这个,性能上会有所提高。
Top
4 楼peng_0_0_1983(这头猪很瘦)回复于 2006-06-02 17:18:02 得分 0
你仔细测测,肯定是内存泄漏。
没有捕捉异常。
我以前遇到过。郁闷死了。后来解决了。Top
5 楼hahaclj(火星人.NET)回复于 2006-06-02 17:30:49 得分 0
TO truelove12(请及时结贴!) :
我知道了,那索引那?有没有影响?将conn字符串写入web.config中,每次都使用这个,性能上会有所提高。这个我知道
TO peng_0_0_1983(这头猪很瘦) :
内存泄漏是怎么回事?给说说!!谢谢!
Top
6 楼wudi_1982(向伴水学习|胃出血,住院中)回复于 2006-06-02 17:36:23 得分 10
内存泄漏就是你请求了内存,但没有及时释放!
资源泄漏就是你请求了某个资源,利于某个xml文件,但没有及时释放,造成别的程序无法使用该资源。Top
7 楼cen123(C#.NET)回复于 2006-06-02 17:40:25 得分 10
及时释放资源,比如:使用了SqlDataReader对象或要立即关闭,数据库连接等!Top
8 楼szc21(卖炭翁)回复于 2006-06-02 17:48:54 得分 0
也想过这方面的问题,可以做个缓存可以把需要的一些DS先导入,然后每次访问的时候就调出,如果不是关闭连接的话,就不需要继续调用数据库,仅供参考,我还没实现Top
9 楼amandag(高歌)回复于 2006-06-02 17:50:14 得分 0
使用缓存,哪怕就是1分钟Top
10 楼chentianfen(yi)回复于 2006-06-02 17:55:30 得分 0
连接字符串要确保一到,这样.net就可以自动的管理连接池,你可以设定连接池的大小好像是poolSize=几个连接(具体忘记了,查一下SDK),
你最好使用一下缓存,自定义缓存(至少单独写在一个Class里面,让它自动管理)
不要Dispose,colose就行了,
Top
11 楼chentianfen(yi)回复于 2006-06-02 17:56:47 得分 0
至于.net内存泄漏,主要是针对非托管的资料,
因为连接是非托管的,所以要显示的关闭掉Top
12 楼jyk(今天由我来写的代码,明天就让程序自己完成!喜欢编程。和气生财。共同提高。共同进步!)回复于 2006-06-02 18:02:08 得分 0
唉,世界是怎么了?
基础知识呀,唉?
1、SqlDataReader是速度很快的??谁说的?
2、输出参数,datareader 是等同的吗?
3、conn.Close() conn.Dispose()cmd.Dispose() adap.Dispose() ??
唉 conn.Close() 就可以了。
4、“大部分应用都是一个连接,应该放到连接池里” 。你一点都不了解 连接池 。
5、“没有建立索引,这么会影响速度吗?”
最来气的就是这个。你说呢,不会影响速度的话sql还弄个 索引 出来干什么呀?!
Top
13 楼yeti20011(雪人)回复于 2006-06-02 18:45:42 得分 0
别总是说啊,给个解决方法啊!!Top
14 楼hahaclj(火星人.NET)回复于 2006-06-02 21:21:09 得分 0
大家不要笑话我,我是新手,有些愚钝!恳请大家的帮助
------------------------------------------------------------------
TO jyk(喜欢编程。和气生财。共同提高。共同进步) ( ) 信誉:100 2006-06-02 18:02:00 得分: 0
1、SqlDataReader是速度很快的??谁说的? | 书上说的,ADO.NET技术内幕,上面说,如果只需要搜索的话,就用sqldatareader,它是速度最快的,但是只提供“只进”检索的话,建议使用!
2、输出参数,datareader 是等同的吗? | 我没有说同等阿,我们那个代码都是利用输入输出来操作数据库,哪怕没有输入,也要输出参数
3、conn.Close() conn.Dispose()cmd.Dispose() adap.Dispose() ??
唉 conn.Close() 就可以了。 | 我们那两个项目都是这样写,但是我看书上从来没有用过DISPOSE,我就问师傅,师傅说,必须要这样释放,不能只CLOSE!我觉得不对,但是没有反驳!
5、“没有建立索引,这么会影响速度吗?”
最来气的就是这个。你说呢,不会影响速度的话sql还弄个 索引 出来干什么呀?!
| 大哥请看清我的问题,我说的是关键字段,不是那个我创建主键而自动产生的字段的索引,也就是说,只要是 where 或者 order 用到的条件 都建立索引,就是建立多个索引,是不是搜索速度要快,而插入或者更新删除的速度就慢了下来~
谢谢大家
Top
15 楼cwlcwr()回复于 2006-06-02 21:34:32 得分 0
一 数据棒定方面
如果可能尽量使用DATAREADER 并及时关闭
DAL曾如果可能编译成DLL调用
尽量少用DATAGRID DATALIST
二 HTML部分
TABLE嵌套问题
大图片问题Top




