这段时间忙工作,很少有时间上论坛了。现在正在搞一个数据采集的小程序,功能很简单,但是有一些疑问,想请大家指教一下。这个程序是做数据采集用的,平均每秒钟要采集两次数据,也就是数据间隔为0.5秒左右,这个程序将来运行时差不多就是8小时工作制,需要每天连续8小时不间断工作。每天采集的数据保存进一个ACCESS数据表,数据不多,只有一个字段。按一天8小时时间算,每天有5、6万数据量,ACCESS数据表应该是装的下。同时需要把采集到的数据显示到一个Teechart控件中。我想请教一下,我现在采用的方法很简单,就是每隔0.5秒就把采集到的数据显示到Teechart中,同时在数据表中做一个数据插入的动作。只是不清楚这样长时间连续的对数据表进行插入操作,是否会引起硬盘持续读写的问题,似乎对硬盘损耗太大。另外不知道有没有别的好的思路可以解决。另外,如果不采用数据表的方式,有没有别的办法可以把在Teechart中显示的数据保存下来,下次运行程序的时候可以显示之前保存的数据。

解决方案 »

  1.   


      可否将数据保存在文件中?即每0.5秒将数据保存在一个文件中,通过定时器每半个小时将文件批处理到数据库中 或者就将数据直接显示在TEECHART中的同时做保存文件,不用保存在库中,做一个按月创建文件夹,按日期创建文件,每个文件夹下是每个月的文件
      

  2.   

    我考虑了一下,或许可以设定一个变量来保存数据,比如stringlist,然后定时把变量里的数据保存到一个文本文件就行,不需要数据库。因为每天下班前都会把当天采集到的数据转移,所以不需要保存很多文件。采用变量来保存数据肯定比插入数据表要快,而且对硬盘读写比较少,只是不太清楚stringlist型的变量可以保存多少行数据?
      

  3.   

    我查了一下stringlist的大小限制,好像说是2G*N,因为每天大约要采集5、6万条数据,每条数据只有一个值,最大也就5位数吧,按这个理论来说,好像一个stringlist变量就足够把采集到的数据都收集起来了,不知道实际使用中会不会出什么问题。有熟悉的高手请指点一下,谢谢
      

  4.   

    用stringlist就可以了,这样的数据量内存足够了,8小时存储一次,使用时就放在内存里。
      

  5.   

    如果怕突然死机或掉电,上面的改进方法(如stringlist)都不行
    如果不怕突然死机或掉电,把access文件放在ramdisk就行了(开机时从硬盘复制到ramdisk,关机前反之)
      

  6.   


    谢谢你的帮助。另外sz_haitao的说法也是要考虑的