笔记:为什么只使用DataReader(DataReader和Dataset的性能比较)?
来源:互联网 发布:java解析json对象 编辑:程序博客网 时间:2024/05/16 01:02
【技术要点】
1、每次Read()方法从数据库中取出一条数据,然后丢弃;然后取出下一条数据
2、它需要保持当前的活动连接
3、它总是顺序读取
【和Dataset的性能差距】
DataReader是后者速度的近30倍,而且从数据库中取出的数据越多,这方面的速度差距也越大
见 A Speed Freaks Guide to Retrieving Data in ADO.NET
【如何提高性能?】
越早从DataReader读取数据,越早关闭DataReader,越早关闭连接,就越能提高性能
【Sql和OleDB性能差距】
Sql的速度是OleDB速度的近10倍
【什么地方使用Dataset?】
1、桌面应用程序中使用,利用客户端的处理能力
2、不同的应用平台之间传输远程数据,比如利用web service传输Dataset
3、需要数据缓存(DataReader是保持数据连接的对象)
其他缓存办法:使用DataReader从数据库中取出数据,循环保存进一个Arraylist,每条数据保存在一个实体类里面,每个字段的数据对应了此类的相应属性。所有这些实体类对象一起构成了数组Arraylist。——这种方法的好处:不仅更有效率,而且更加易于保持,降低和数据库之间的耦合;当然,此数据集合也可以方便的绑定到控件中(http://aspnet.4guysfromrolla.com/articles/102302-1.aspx)。
4、需要自由的获得关系数据的时候,比如主从表。与其每次都从数据库中取相应父栏目下的所有子数据,不如一次性全部取出子数据,然后根据table表之间的关系relation绑定到控件。
【使用Dataset的若干理由】
1、某些场合使用它开发更加方便
2、有时候可以让web客户端像桌面客户端
嗯,有几个问题,DataSet是慢,但是填充DataSet时候也是用DataReader 的,不信的话,可以在一个连接里面先用一个DataReader读数据,然后不把它关掉,连接也不管,然后用这个连接Fill一个DataSet,看看报什么异常(用的数据库要SqlServer2000 2005 看不到效果的) DataSet慢的原因有很大部分来自推断架构,因为DataTable是不可能知道你的数据库的表的架构,只能透过DataReader去推断架构的,这个才是最浪费时间的,因此我们可以知道用强类型数据集会比普通的DataSet来的快。 我们看看DataSet里面的DataTable 支持的操作那么多,比起LZ说的那种方法(ArrayList)来得强大,但是如果这些功能用不上呢,当然是LZ那种好了。这个可以参考PetShop4.0 的IList
很赞同,DataSet慢主要还是由于推断Schema,DataAdapter内部还是使用DataReader填充DataTable,
如果数据源是SQL7。0以上,使用SqlClient肯定比OleDb性能高,因为SqlClient是专门对Sql作了优化的,而OleDb需要保持各个数据库的兼容性
- 笔记:为什么只使用DataReader(DataReader和Dataset的性能比较)?
- DataReader和Dataset的性能比较
- DataSet和DataReader之间的比较
- DataSet和DataReader的区别
- DataSet和DataReader的区别
- DataReader和DataSet的区别
- DataReader和DataSet的选择
- DataSet和DataReader的区别
- DataSet和DataReader的区别
- DataReader和DataSet的区别
- DataSet和DataReader的区别
- DataReader和DataSet的异同
- DataReader和DataSet的异同
- DataReader和DataSet的异同 .
- dataset和datareader的区别
- datareader和dataset的区别
- DataSet和DataReader的区别
- DataReader和DataSet的区别
- Microsoft Visio 2003(中文版)在UML 上的简单使用
- 深入探究JFreeChart(1)
- pb开发的程序如何脱离pb的开发环境
- 80x86 汇编指令大全
- 利用多线程让没有窗口的程序显示进度条
- 笔记:为什么只使用DataReader(DataReader和Dataset的性能比较)?
- 博文视点近期出版图书一览表!(2007年06月-2007年07月)
- PB与各种数据库连接!!
- 好的东西不是万能的,要变通
- Ubuntu Linux关闭红外连接[00原创]
- 深入探究JFreeChart(2)
- 事件处理程序中sender参数的用法
- c++中的引用的使用原理以及使用实例 (3)
- 如何得到磁盘的分区格式,如 fat32,ntfs等