社区
C#
帖子详情
海量数据库的比较。用DR还是用DS。。。
duguguiyu1984
2006-04-25 10:19:09
在做一个两个数据库数据匹配的测试程序。
原来的程序是用DS先把两边数据库的内容读进内存。然后比较。对与内存无法承受的数据量。利用SQL分页,然后比较。
现在我想用DR来写。个人觉得速度应该能有所提高,对内存的要求也会降低。但还有一些担心。比如,DR中对数据库的排序在哪里进行。运行到后面速度会不会降低。
希望大家给点意见和看法。谢谢。。
...全文
554
18
打赏
收藏
海量数据库的比较。用DR还是用DS。。。
在做一个两个数据库数据匹配的测试程序。 原来的程序是用DS先把两边数据库的内容读进内存。然后比较。对与内存无法承受的数据量。利用SQL分页,然后比较。 现在我想用DR来写。个人觉得速度应该能有所提高,对内存的要求也会降低。但还有一些担心。比如,DR中对数据库的排序在哪里进行。运行到后面速度会不会降低。 希望大家给点意见和看法。谢谢。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
duguguiyu1984
2006-04-26
打赏
举报
回复
To: Knight94(愚翁)
谢谢了。。我会好好考虑的。。。
Knight94
2006-04-26
打赏
举报
回复
to 1.在做dr=cmd.ExecuteReader()时间颇长。服务器压力很大。按自己理解是在服务器上进行分页。想知道具体如何执行。
2.在dr.read()是服务器压力依然不小。这就不明白服务器是在做什么工作。
因为执行的是查询语句,虽说用dr每次只读一条语句,但是对于数据库服务器端可并不轻松,也会产生临时表,可能方式不像da+ds那样效率低,但是对于数据量大的表来说,一样也是耗时的;至于read操作来说,也是一样的,数据量大的表来说,不能同时放到内存中,也会产生内存换页现象。
既然已经有分页存储,用dr去操作存储可能效果会好很多,不过需要修改的建议如下:
1、每次取得数据记录不要太多;
2、不要让系统帮你去分页,由于你是顺序取,每次取来的最后一条记录的主键值你是知道的,用它作为参数,去获得下一批的记录集。
Kshatriya
2006-04-25
打赏
举报
回复
排序當然要在數據庫裏做了,我用dataSet比過,數據量算比較大吧,還可以
soaringbird
2006-04-25
打赏
举报
回复
哦,两个数据库的数据啊,那就得写程序或者其他方式了。用DR比DS快,你要排序的话,可以在SQL语句里排序,order by 一下。
aSalt
2006-04-25
打赏
举报
回复
up....海量数据没比过
要我比就先排序
然后DR肯定是快
等你们的好办法~
InLimBo
2006-04-25
打赏
举报
回复
如果只要相同或不同这两个结果中的一个的话,可以分别对两个数据库进行hash,比较结果
xieshy
2006-04-25
打赏
举报
回复
1.DR中对数据库的排序在哪里进行? 在DATABASE SERVER.
2.支持用DR.
duguguiyu1984
2006-04-25
打赏
举报
回复
To:soaringbird()
这是一个用于测试的工具。不然你怎么保证sql和oracle中数据一致。你也不能要求所有的测试人员都熟练使用各种数据库工具。
To:boyxia(>>雪饮狂刀 [抵制日货]<<)
不明白,怎么和存储过程扯上了。。
jerryfos
2006-04-25
打赏
举报
回复
DR的查询速度肯定比DS快,相同条件下所占用的内存也会比DS少,根据楼主的应用,应该需要一个或多个共同规则的索引,使用DR逐个比较,比完就丢,把结果记录下来应该就可以了吧
boyxia
2006-04-25
打赏
举报
回复
存储过程里处理比较好
soaringbird
2006-04-25
打赏
举报
回复
为什么不让数据库自己去比呢?海量数据,你光读出来就要多长时间呀?
duguguiyu1984
2006-04-25
打赏
举报
回复
To:Knight94(愚翁)
谢谢指点。因为只需要读取,而且数据分页难度颇大。所以还是决定选择Dr。有点问题还是望指点。(测试的数据表示一个10M的表)
1.在做dr=cmd.ExecuteReader()时间颇长。服务器压力很大。按自己理解是在服务器上进行分页。想知道具体如何执行。
2.在dr.read()是服务器压力依然不小。这就不明白服务器是在做什么工作。
-渔民-
2006-04-25
打赏
举报
回复
認為ds比較合適大量的吧,它吃大內存,因為它支持斷開的呀,
要是小弟說錯,不對之處請指出,請各位不要見怪?^_^
winner2050
2006-04-25
打赏
举报
回复
复习一下计算机等级一级考试的必考题
计算机处理数据的流程都是:硬盘(同类存储介质)》》内存》》CPU缓存》》CPU运算
DR DS的区别是DR读了马上用,马上清理,DS是进入内存里面变成一个内存数据库表,再集中使用,然后清理。
Knight94
2006-04-25
打赏
举报
回复
to DR中对数据库的排序在哪里进行。运行到后面速度会不会降低。
相对来说,dr的效率要高一些,至于排序,是在执行的command中进行,即设置sql语句的排序;
但是要注意的一点是,如果dr没有关闭,那么当前的connection是不会释放的,因此要防止此时用同一个connection去做其他事情。
不过你既然用到分页,用da也未尝不可,而且在更新的时候,也可批量操作。
zhaoliang_chen
2006-04-25
打赏
举报
回复
dr效率高
ds会吃光内存的,效率极低
duguguiyu1984
2006-04-25
打赏
举报
回复
用百万级数据库测试的结果来看。如果两边数据匹配,速度差不了太多。如果不匹配(跳出了),DR的优势明显。从内存上看,DR基本不大用。DS则恐怖了。。。
还想听听大家的看法。要做的是一个4kw++的表。。。紧张啊。。。
13.
数据库
访问技术
数据库
访问技术1
数据库
基础1.1
数据库
简介1.2 SQL语言简介1.3
数据库
的创建及删除1.4 数据表的创建及删除1.5 简单的SQL语句的应用2. ADO.NET简介3 连接
数据库
:Connection对象3.1 Connection对象概述3.2 连接
数据库
...
软考
数据库
详细知识点整理(全)
由于直接插入排序所需的记录移动操作较简单选择排序多,因此当记录本身信息量较大时,用简单选择排序方法较好。若待排序记录按关键字基本有序,则宜采用直接插入排序或冒泡排序当n 很大且关键字的位数较少时,采用...
摘抄:
数据库
连接池
...概述:
数据库
连接池允许应用程序重用已存在于池中的
数据库
连接,以避免反复的建立新的
数据库
连接。这种技术能有效提高应用程序的伸缩性,因为有限的
数据库
连接能够给大量的客户提供服...
DataSet对象
DataSet对象可以用来存储从
数据库
查询到的数据结果,由于它在获得数据或更新数据后立即与
数据库
断开,所以程序员能用此高效地访问和操作
数据库
。并且,由于DataSet对象具有离线访问
数据库
的特性,所以它更能用来接收...
C#与
数据库
访问技术总结(十六)之 DataSet对象
DataSet对象可以用来存储从
数据库
查询到的数据结果,由于它在获得数据或更新数据后立即与
数据库
断开,所以程序员能用此高效地访问和操作
数据库
。 并且,由于DataSet对象具有离线访问
数据库
的特性,所以它更能用来...
C#
110,566
社区成员
642,567
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章