CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

频繁对数据库io对性能影响多大?

楼主fengfeng2003()2004-08-01 11:17:51 在 C/C++ / C++ 语言 提问

现在做一个工程程序  
   
  程序的实现是这样的:  
  第一个模块:  
  数据取样模块:  
  每隔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

相关问题

  • 数据库处于归档模式是否会影响数据库性能?
  • 用PIPELINE影响源数据库性能吗?
  • 大家谈谈视图对数据库性能的影响
  • 大家谈谈视图对数据库性能的影响
  • sqlserver的数据库记录和性能的影响的问题?
  • 在一个数据库中建多个存储过程对数据库性能有没有不利影响
  • 提问:关于文件上传到数据库后对数据库性能是否会有影响?
  • 我的数据库里有20个触发器 ,这会不会影响数据库的性能?
  • 数据库性能问题?
  • 一个数据库中包含粉肠多的表,比如有10000以上,对数据库性能有影响吗

关键词

  • 数据库
  • 模块
  • 数据
  • 性能
  • sql
  • 删除
  • 记录
  • 影响
  • 扫描
  • 条件

得分解答快速导航

  • 帖主:fengfeng2003
  • UPCC
  • lingjingqiu
  • step_by_step
  • chon81
  • fullsail
  • antijpn
  • ghgk
  • fullsail

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

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