DB_BatchInsertとは

構造体のデータをリングバッファに一時的に格納します
データベースにInsertするときにリングバッファからデータを読み出してDB_BatchInsert命令を実行します
DB_BatchInsert命令は複数のレコードを一括挿入する命令なのでリングバッファに溜まっているデータを複数読みだしてDBに一括挿入することで挿入時間の短縮が期待できます

DB_BatchInsertによる一括ロギング構成図

DB_Insertとの違い

方式特徴
DB_Insert1レコードずつ追加
DB_BatchInsert複数レコードを一括追加

DB_BatchInsertは大量データの保存に向いています。 通信回数を削減できるためデータベース負荷を低減できます。

DB_BatchInsertのメリット

  • 通信回数を削減できる
  • 大量データを高速保存できる
  • データベース負荷を軽減できる
  • 長期間のロギングに向いている

使用するファンクション

リングバッファのファンクションを使います

リングバッファ書込みファンクション

リングバッファ読出しファンクション

ロギング用構造体

構造体定義

ラダープログラム例

DB_BatchInsertラダープログラム例

リングバッファにレコードがあればDBに接続します
構造体とDBのテーブルをマッピングし、構造体にリングバッファに溜まっているデータをセットします
ここでは一回にInsertするレコード数は1000レコードまでとしています
DB_BatchInsert命令を実行してクローズします

よくある質問

DB_InsertとDB_BatchInsertはどちらが速いですか?

大量データの場合はDB_BatchInsertの方が高速です。通信回数を減らせるため処理負荷も低減できます。

一度に何件登録できますか?

PLCメモリ容量やデータベース設定によります。サンプルでは1000レコードを上限としています。

リングバッファは必須ですか?

必須ではありませんが、高速収集とDB通信を分離できるため推奨します。

ダウンロード

この記事へのコメント