求救!!我用delphi的bde引擎链接access数据库处理更新数据,速度奇慢啊!!!高分,高分!(200分)

  • 主题发起人 山水之间
  • 开始时间

山水之间

Unregistered / Unconfirmed
GUEST, unregistred user!
各位专家:
小弟在这求教了!
我用delphi的bde引擎链接access数据库,在程序中完成这样的功能:
1、每10秒钟读取由底层通信系统传来的数据(我把它放在access数据库中,两个表,18个数据),对这些数据进行计算求解其它参数
2、将每10秒的数据存入数据库(5个表,每个表为17个字段),并作图显示动态曲线。(保持数据库记录数不变,然后每次通过记录尾加数据,并删除第一条数据实现)
3、每5分钟读取10秒的数据库进行平均统计,求出平均值,写入数据库(5个表,每个表为17个字段)
4、每一小时读取5分钟的数据库进行平均统计,求出平均值,写入数据库(每个表记录数:1000条)
5、每8小时读取1小时的数据库进行平均统计,求出平均值,写入数据库(每个表记录数:10000条)
6、每天读取1小时的数据库进行平均统计,求出平均值,写入数据库
7、每月读取1小时的数据库进行平均统计,求出平均值,写入数据库
以上时间我采用timer控件来出发,每10秒计算一次,并用时间判断是否该统计,如到了整点就该统计一小时数据了。

问题是:在进行access数据库操作时,指针总编程漏斗状,(指针编程漏斗时就不能进行其它的操作)刚开始约有3秒左右是漏斗状,而且随着程序运行的时间越来越长,漏斗出现的时间也越来越长,
最后就全是漏斗,这样就影响在程序中用鼠标点击其它命令。
我想是不是数据库读写,打开关闭数据表,搜索记录并平均统计过程中占用太多时间,或是跟内存什么的有关?有什么办法能解决?
 
因为Timer会不断占用内存空间!
你可以改为动态链接库或者用消息的方法去实现!
具体实现你去查看有关帮助!
 
记录太多,不应超过10000条,改用sqlserver吧
 
你的Timer就相当于多了一个多线程,当然慢了
还有你用BDE就更慢了,如果您只是操纵Access库的话,速度最快的是DAO(注意:不是ADO)
所以建议您不要用BDE了
 
还有个方法,加内存,升机器
 
恐怕Timer浪费不了多少!
主要是数据库部分!
//1、每10秒钟读取由底层通信系统传来的数据…………
数据越多,机器肯定越慢!建议用自定义文件处理,不要用数据库!
 
是不是使用数组也在占用内存啊??
 
那当然!不要说你动态生成许多数组。
 
绝招!
我遇到过同样问题
用连接access数据库速度会变的很快。
 
一个笨办法:一块一块检测你的程序,看看哪里在吃内存
 
多人接受答案了。
 
顶部