LABVIEW深入探索之MDB數(shù)據(jù)庫寫入速度問題。
掃描二維碼
隨時(shí)隨地手機(jī)看文章
近日在LABVIEW的群中,看到幾次討論利用隊(duì)列把采集的數(shù)據(jù)寫入到數(shù)據(jù)庫的問題,討論非常熱烈,但是他們忽略了一個(gè)重要的問題,就是數(shù)據(jù)庫的最大寫入速度的問題。
一旦你每秒采樣數(shù)超過一定限度時(shí),無論你采用何種編程方式,如何優(yōu)化你的程序,在超過一定限度后,都是不可能實(shí)現(xiàn)的,在這種情況下,討論如何解決就毫無意義了。
隊(duì)列主要有三方面的用途,并行、解除耦合和解決忙先不均。在高速采集時(shí),隊(duì)列只是起到了并行的作用。由于采集的速度遠(yuǎn)大于數(shù)據(jù)庫的寫入速度,這種情況下,使用數(shù)據(jù)庫本身就是一個(gè)錯(cuò)誤的選擇,是不可能實(shí)現(xiàn)的。
下面我利用LABVIEW本身的數(shù)據(jù)庫例程,稍微改動一下,測試數(shù)據(jù)庫的寫入速度。LABVIEW數(shù)據(jù)工具包提供三種不同的寫入數(shù)據(jù)方式。
1、自動方式。利用“插入數(shù)據(jù)”VI。
2、利用SQL查詢方式。
3、利用SQL參數(shù)化查詢。
這三種方式中,SQL查詢方式速度明顯是最快的。SQL參數(shù)化查詢和自動方式非常接近,SQL參數(shù)化查詢比自動化方式略快一些。
在我的計(jì)算機(jī)中,寫入10000條記錄,SQL查詢方式約為20秒,其它方式約為30秒。也就是說使用MDB數(shù)據(jù)庫,每秒最快寫入約500條記錄。
我寫入的記錄數(shù)據(jù)量是很小的,如果記錄中存儲的數(shù)據(jù)量很大,速度還要慢。所以,使用數(shù)據(jù)庫僅僅適合與低速采集,對中高速采集是不可能實(shí)現(xiàn)的。
LABVIEW的DSC工具包采用了通用數(shù)據(jù)庫,因?yàn)槌S玫膾呙柚芷跒?00MS,這是沒有問題的。對于中高速采集,提供了TMDS存儲方式。即使采用TDMS方式,也必須在一定限度之內(nèi),畢竟最終的速度還是取決于硬件設(shè)備。