コンテンツにスキップ

10.1 概要と選択基準

VOLATILEテーブルは、データをメモリに保存する一時テーブルです。 サーバーを再起動するとデータが消失するため、再作成可能な最新状態、一時集計、セッション間の共有キャッシュに使用します。

VOLATILEテーブルの特性

VOLATILEテーブルはCREATE VOLATILE TABLE文で作成します。

CREATE VOLATILE TABLE ch10_overview (
    sensor_id  VARCHAR(64) PRIMARY KEY,
    value      DOUBLE,
    updated_at DATETIME
);

VOLATILEテーブルの主な特性は次のとおりです。

項目内容
主な用途最新状態のキャッシュ、一時集計、中間結果
保存場所メモリ
再起動後のデータ消失
共有範囲サーバー全体で共有
キーPRIMARY KEYは任意
主な機能UPDATE、DELETE、ON DUPLICATE KEY UPDATE、赤黒木インデックス
バックアップ未サポート

選択基準

次の条件に該当する場合は、VOLATILEテーブルを使用します。

  • サーバー再起動後にデータが失われても問題がない。
  • 元データからいつでも再計算または再構築できる。
  • 最新状態、直近の集計、一時処理結果を高速に検索する必要がある。
  • 複数のセッションで同じ一時状態を共有する必要がある。
  • ディスクの永続性より、メモリによる応答時間を重視する。

最新のセンサー状態を維持する例は次のとおりです。

INSERT INTO ch10_overview VALUES ('TEMP-01', 23.5, NOW)
ON DUPLICATE KEY UPDATE SET value = 23.5, updated_at = NOW;

SELECT *
FROM ch10_overview
WHERE sensor_id = 'TEMP-01';

-- 次の節で同じ名前を使うため、削除します。
DROP TABLE ch10_overview;

活用パターン

パターンkey再作成元推奨する期限管理方法
機器の最新状態機器IDTAGまたはLOG同じkeyを更新
短周期の集計対象と時間bucketTAGまたはLOGbucketの置き換えまたは再構築
処理の進行状態ジョブIDジョブシステム完了後にkeyを削除
一時クエリキャッシュリクエストまたはオブジェクトID永続テーブル全体を再構築

最新状態の更新はデータ入力と変更、 一時集計はクエリと分析を参照してください。

他のテーブルを検討する場合

次の要件には、他のテーブルタイプを使用します。

要件推奨テーブル
再起動後も必ず保持する元データTAGまたはLOG
基準コードや機器マスターなどの永続的な参照データLOOKUP
トランザクションとリレーショナルな更新が必要な業務データTRANSACTION
長期分析対象の時系列データTAG

VOLATILEテーブルだけに保存したデータは、サーバー終了時に復旧できません。 重要なデータはTAG、LOG、LOOKUP、TRANSACTIONから適切な永続テーブルを選んで保存し、 VOLATILEテーブルはキャッシュや中間結果に使用します。

設計手順

VOLATILEテーブルの設計では、次の順序で決定します。

  1. データを再作成できることを確認します。
  2. PRIMARY KEYが必要かを決めます。
  3. 想定行数とメモリ使用量を見積もります。
  4. 再起動後の初期ロード手順を用意します。
  5. 保持が必要な結果は、アプリケーションの明示的な書き込みで永続テーブルに保存します。 VOLATILEを永続化する専用のflushコマンドはありません。

スキーマとPRIMARY KEYの設計はテーブル構造とスキーマ、 再起動への対応は再起動とデータ消失で説明します。

最終更新日