CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

一个aspdotnet网站的速度很慢,是什么原因造成的??我分析了一下,再请高手给指导指导

楼主hahaclj(火星人.NET)2006-06-02 16:43:36 在 .NET技术 / ASP.NET 提问

是个门户网站,用户注册的数量很多,但是搜索速度很慢!容易出错!  
  我看了代码,每次操作数据库,尤其就是读取数据的时候,也用输出参数,调用存储过程,我知道用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

相关问题

关键词

得分解答快速导航

  • 帖主:hahaclj
  • wudi_1982
  • cen123

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo