VB与ACCESS数据库交换数据,数据量很大,软件运行速度慢!
我用VB写的数据采集系统,将数据存入到ACCESS数据库中。
采集每台仪器的数据,每个仪器对应一个数据库,每个数据库中保存最近2天内每10秒产生的数据(17280个数据)、最近7天内每分钟的数据(10080个数据)、最近30天内每10分钟的数据(4320个数据),也就是说每个数据库中有17280+10080+4320=31680个数据,总共连接20台仪器,也就是有20个数据库。
软件运行起来,很慢!如何解决这个问题?请高手指点!!
[解决办法]
大数据量处理为什么不先把数据存入内存中(比如定义一个大数组),等数据的量达到了一定时再写入数据库?你可定义一个结构类型,该类型中包含了所有你要存入数据库的信息,再定义一个该结构的数组,就拿10s存一次数据库的要求来说,一天也才24*3600/10=8640个数据元素,以一个元素占用200个字节(其实未必达到200个字节)算,一天的数据占用内存:200*8640=1.65MB,这个内存开销不大吧?且在内存中存取数据很快,这对数据处理速度提升很有帮助。
问题的关键在于什么时候将数据存入数据库了,你可以在数组数据过半时存一次数据库,存数据库时后台处理,采用循环处理,循环中加入DoEvents,避免影响你的数据采集。此时系统会缓慢些。