LABVIEW深入探索之MDB数据库写入速度问题。
扫描二维码
随时随地手机看文章
近日在LABVIEW的群中,看到几次讨论利用队列把采集的数据写入到数据库的问题,讨论非常热烈,但是他们忽略了一个重要的问题,就是数据库的最大写入速度的问题。
一旦你每秒采样数超过一定限度时,无论你采用何种编程方式,如何优化你的程序,在超过一定限度后,都是不可能实现的,在这种情况下,讨论如何解决就毫无意义了。
队列主要有三方面的用途,并行、解除耦合和解决忙先不均。在高速采集时,队列只是起到了并行的作用。由于采集的速度远大于数据库的写入速度,这种情况下,使用数据库本身就是一个错误的选择,是不可能实现的。
下面我利用LABVIEW本身的数据库例程,稍微改动一下,测试数据库的写入速度。LABVIEW数据工具包提供三种不同的写入数据方式。
1、自动方式。利用“插入数据”VI。
2、利用SQL查询方式。
3、利用SQL参数化查询。
这三种方式中,SQL查询方式速度明显是最快的。SQL参数化查询和自动方式非常接近,SQL参数化查询比自动化方式略快一些。
在我的计算机中,写入10000条记录,SQL查询方式约为20秒,其它方式约为30秒。也就是说使用MDB数据库,每秒最快写入约500条记录。
我写入的记录数据量是很小的,如果记录中存储的数据量很大,速度还要慢。所以,使用数据库仅仅适合与低速采集,对中高速采集是不可能实现的。
LABVIEW的DSC工具包采用了通用数据库,因为常用的扫描周期为100MS,这是没有问题的。对于中高速采集,提供了TMDS存储方式。即使采用TDMS方式,也必须在一定限度之内,毕竟最终的速度还是取决于硬件设备。