大きなTDMSファイルサイズを小さくする方法

更新しました Aug 21, 2023

使用製品

ソフトウェア

  • LabVIEW
  • DIAdem

問題

LabVIEWプログラムを長時間実行すると、TDMSファイルとTDMS_indexファイルのサイズはギガバイト単位になります。これは、ファイルへ一度に1つのサンプルを書き込むときにだけ発生する問題のようです。それらのファイルサイズが非常に大きくなるのはなぜですか?また、それらのファイルサイズを小さくするにはどうすればよいですか?
 

さらに、DIAdemでファイルを開いてから変更を加えずにData Portalに保存すると、TDMSファイルとTDMS_indexファイルははるかに小さくなります。何かデータを失いますか?DIAdemでファイルを操作した後、ファイルサイズがそれほど大きく変わるのはなぜですか?

解決策

TDMSファイルのサイズを小さくする方法は、複数あります。
 

  • 一度に複数のデータポイントをTDMSファイルに書き込みます。
  • TDMSを最適化関数を使用して データを統合します。コードの最後にこの関数を含めることで、アプリケーションの終了前にファイルが確実に最適化され、ディスクスペースを節約できます。

 

追加情報

この問題では、TDMSの断片化が発生しています。データがTDMSファイルに書き込まれるたびに、メタデータヘッダがデータとともにTDMS_indexファイルに書き込まれます。つまり、TDMSファイルに一度に1ポイント書き込むと、ファイル内のすべてのデータポイントにヘッダ情報があります。下記のコードでは、ループの繰り返しごとにTDMS書き込み関数を使用して、TimeおよびChn1データを書き込むたびにメタデータが書き込まれます。


 

 

この影響を最小限に抑えるために、一度に複数のデータポイントをTDMSファイルに書き込むことをお勧めします。または、ビルドインTDMS関数の1つを使用することができます。
 

TDMSを最適化関数は現在のTDMSファイルを調べ、特定のチャンネルとともにすべてのデータを統合します。大きなTDMSファイルに対してこの関数を使用すると、多少時間がかかりますが、それに続くTDMS読み取り関数のパフォーマンスが向上します。DIAdemでファイルを開くとファイルが最適化され、すべてのメタデータが統合されます。
 

最後のオプションは、TDMSファイルに書き込む前にバッファを使用して一定量のデータを格納することです。TDMS 書き込み関数ごとに1ポイントのデータを書き込む場合は、TDMSファイルに書き込む前に達成する必要がある最小バッファサイズを指定できます。これにより、書き込まれるヘッダ数が減り、パフォーマンスも向上します。

バッファの設定には、TDMSファイルに書き込むすべてのチャンネルに対して、TDMSプロパティを設定関数を使用してNI_MinimumBufferSizeを希望の値に設定します。詳細については、TDMSファイルでのファイルバッファリングを参照してください。