DR因为会占用connection,所以一般不用,或者尽量少用。
除非要一次返回多个表,一般就只用返回一个DataTable对象就可以了,无谓返回DataSet这样一个大的对象。再就是分页操作最好是用sql实现,这样返回的DataTable或者DataSet对象
就会小很多,因为只包含你所需要的少量数据。
对记录数大到一定数量级的表建立索引,也会提高一些性能的。
至于把数据序列化成XML文件,我个人认为非但不会提高性能,反而会降低性能。因为对一个xml文件的解析会比从数据库中查询更消耗系统资源(cpu,内存)。加大服务器的配置(增加cpu,内存,采用高性能的磁盘阵列,将数据分布存储,并行查询)
应该是最好的方法(当然就要多花银子,^_^)以上都是个人的一些经验和看法,希望大家都来讨论一下。
up up up

解决方案 »

  1.   

    对于XML这个方案,本人也有点想到他的功能是否可行,但是微软.NET程序员系列 中 的《Visual Basic .NET 面向对象可重用级件开发/(美)斯宾赛等著;杜志秀,张文波,李珂译--北京: 清华大学出版社,2003》书中的的确确是这样分析的。应该有它的操作理由在,可就是想不太通(内存方面)。
      

  2.   

    用DataReader就行了,不太明白楼主说的使用DataReader要严格控制连接池是什么意思,在用DataReader时需要手动打开数据库连接,而且在读取数据时这个DataReader要独占一个数据库连接,但这和连接池没有什么关系,只要你在读取数据之后立即手动关闭数据库连接就行了。至于DataSet,在用DataAdapter填充时同样需要打开数据库连接,不过这个连接是DataAdapter的Fill方法自动打开的而已,并不等于用DataSet获取数据就不占用数据库连接。
      

  3.   

    对,webdiyer讲的对,的确如此。
    不过我对datareader在大并发访问量的情况下的表现表示怀疑,这种情况下恐怕用dataset反而高效率。同时如果在dataset中只存储必要的数据,性能上也不会有太大影响的。
    不过以上终归是理论,自己做的东西从来没有承载过高并发访问量的。:(