频繁对数据库io对性能影响多大?
现在做一个工程程序
程序的实现是这样的:
第一个模块:
数据取样模块:
每隔10秒中采集一次数据,放入数据库中。这样每天的数据量大概6×60×24=8640个点。
数据处理模块:
然后每一天零点对这些数据进行处理,其中包括对数据进行多次扫描处理,每一次扫描将不复合条件的数据删除。
在第一个模块里我采用了一个缓冲,为了避免频繁写入
但是在第二个模块里面的多次扫描,删除,是不是会对性能产生很大的影响啊,不知道大虾们有什么好的解决办法。
多谢
这里用的是SQL SERVER
问题点数:100、回复次数:19Top
1 楼UPCC(杂食动物)回复于 2004-08-01 11:34:23 得分 10
你说说大概什么条件删除,要怎样删除啊,
不然一条Sql就删除了很多东西了,影响不会很大的Top
2 楼lingjingqiu(空明流转)回复于 2004-08-01 11:39:02 得分 5
大约要有50%的性能影响Top
3 楼step_by_step(脚印)回复于 2004-08-01 14:10:19 得分 5
第二个模块的删除条件是什么?
你的sql是怎么写的?
看看可不可以优化一下流程Top
4 楼chon81(当我遇上你…)回复于 2004-08-01 14:15:01 得分 5
有些操作能让数据库去做的就让数据库去做.这样会减少一些IO操作Top
5 楼fullsail(远航)回复于 2004-08-01 16:21:26 得分 40
每隔10秒中采集一次数据,放入数据库中。这样每天的数据量大概6×60×24=8640个点。
这个量对于数据库来说儿科到极点了。你就放心的用吧。几乎影响为0。除非你读写的数据极大。
频繁对数据库io对性能影响多大?
很大,但看的频繁度。Top
6 楼fengfeng2003()回复于 2004-08-01 16:40:49 得分 0
我不是用的sql语句,我用的是mfc的CRecordSet类,直接用的它的delete方法
因为第二个模块处理的时候大概是这样一个过程:
从第一个记录开始,取前四个点,将满足条件的删去,(可能两点,也可能不删除)如果没有删除的点就后移一个点,如果删除两个点就后移两个点,重新构成四个点,进行判断,直到最后一个记录。而后重新回到第一条记录,重复次过程,知道这一次扫描中,没有可以删除的点为止。
反正我老是感觉有问题,算法反正就是这样的,我原原本本的按照算法做的,不知道有没有别的实现方法。
Top
7 楼antijpn(antijpn)回复于 2004-08-01 17:39:27 得分 10
IO模型如果完善的话,可以大幅提高性能,但是IO仍然是相当慢的,建议多线程,某些线程专用于IO操作Top
8 楼changeme(我本楚狂人)回复于 2004-08-01 19:12:43 得分 0
write >> read
Top
9 楼fengfeng2003()回复于 2004-08-01 20:03:26 得分 0
upTop
10 楼fengfeng2003()回复于 2004-08-02 11:13:11 得分 0
upTop
11 楼wwweasy(wwweasy)回复于 2004-08-02 11:27:50 得分 0
顶Top
12 楼RookieStar(Yukon)回复于 2004-08-02 11:50:51 得分 0
MARKTop
13 楼fullsail(远航)回复于 2004-08-02 15:43:30 得分 0
多线程不会大规模提供I/O速度,即使时多路复用也不行。提高很有限。Top
14 楼fullsail(远航)回复于 2004-08-02 15:46:45 得分 0
To fengfeng2003() :
你那样效率不会高,只是把I/0分散开了。在数据库中删除效率是非常非常非常非常非常非常非常高的。
因为,数据库一般只是修改一个记录标志位而已。对表的删除是同样的道理。如果你的记录小于20万,你一次解决了绝对没有致命的I/O缺陷。Top
15 楼tatbaby(岛主)回复于 2004-08-02 17:52:21 得分 0
upTop
16 楼fengfeng2003()回复于 2004-08-03 08:31:21 得分 0
to fullsail(远航)
问题是我删除记录的时候并不是放在一起删除的,而是有满足删除条件的就删除次条记录。
不知道这样会不会有问题。
如果不行,有什么别的好办法吗
多谢!Top
17 楼fengfeng2003()回复于 2004-08-03 18:40:05 得分 0
upTop
18 楼ghgk(红猪侠)回复于 2004-08-03 19:12:11 得分 10
用mfc的CRecordSet的deltree方法来删除记录的效率会有问题,我认为主要在方法调用、对该不该删掉的逻辑判断的开销上。Top
19 楼fullsail(远航)回复于 2004-08-03 19:25:34 得分 15
我可能理解错了你的意思。
我的观点是如果你要删除某些符合条件的记录,直接使用SQL可能会更加高效。Top




