コンテンツにスキップ
タイマー

タイマー

タイマーは、指定した時刻または一定の間隔で実行する処理を定義します。

新しいタイマーの追加

指定したスケジュールで実行する処理を登録します。タイマー管理のWeb UIは、 Since v8.0.20 から利用できます。

  1. 左側のメニューでアイコンをクリックします。

  2. 左上の+アイコンをクリックします。

  3. タイマーID(名前)、スケジュール(Timer spec)、実行するTQLのパスを入力します。

  1. 「Create」ボタンをクリックしてタイマーを作成します。

タイマーの開始・停止・削除

トグルボタンを押して開始し、を押して停止します。

タイマーのスケジュール仕様

使用できるスケジュール表現の例は以下のとおりです。

0 30 * * * *           毎時30分に実行
@every 1h30m           1時間30分ごとに実行
@daily                 毎日実行

CRON式

フィールド名必須かどうか使用できる値特殊文字
秒必須0-59* / , -
分必須0-59* / , -
時必須0-23* / , -
日必須1-31* / , - ?
月必須1-12またはJAN-DEC* / , -
曜日必須0-6またはSUN-SAT* / , - ?
  • アスタリスク *
    対応するフィールドのすべての値を表します。
    例:第5フィールド(月)に*を指定すると、毎月を表します。

  • スラッシュ /
    範囲内の間隔を表します。たとえば、第2フィールド(分)に3-59/15を指定すると、毎時3分から15分間隔で実行します。
    */...は、first-last/...と同じで、そのフィールドの全範囲を一定間隔で扱います。N/...はN-MAX/...と同じで、Nから範囲の末尾までを指定間隔で扱い、先頭には戻りません。

  • カンマ ,
    複数の値を指定します。例:第6フィールド(曜日)にMON,WED,FRIを指定すると、月・水・金曜日に実行します。

  • ハイフン -
    範囲を指定します。例:9-17は、午前9時から午後5時まで、両端を含む毎時を表します。

  • 疑問符 ?
    日(day-of-month)または曜日(day-of-week)のフィールドを空にする場合、*の代わりに使用できます。

定義済みスケジュール

項目説明等価な式
@yearly (または@annually)毎年1月1日の午前0時に実行0 0 0 1 1 *
@monthly毎月1日の午前0時に実行0 0 0 1 * *
@weekly毎週日曜日の午前0時に実行0 0 0 * * 0
@daily (または@midnight)毎日午前0時に実行0 0 0 * * *
@hourly毎時0分に実行0 0 * * * *

間隔の指定

@every <duration>構文を使用します。durationは、300ms、-1.5h、2h45mのように符号、小数、単位を含められます。使用できる単位はms、s、m、hです。

@every 10h
@every 1h10m30s

コマンドライン

タイマーの追加

構文: timer add [--autostart] <name> <timer_spec> <tql-path>

  • --autostart : machbase-neoの起動時に自動的に実行します。
    自動起動を使用しない場合は、timer start <name>とtimer stop <name>で手動操作します。
  • <name> : タイマー名
  • <timer_spec> : 実行スケジュール(前述のスケジュールを参照)
  • <tql-path> : 実行するTQLスクリプトのパス

タイマー一覧

構文: timer list

タイマーの開始・停止

構文: timer [start | stop] <name>

タイマーの削除

構文: timer del <name>

Hello Worldの例

タイマーの基本動作を確認します。

テーブルの作成

CREATE TABLE HELLO (
  NAME  VARCHAR(100) PRIMARY KEY,
  TICK  DATETIME,
  COUNT INTEGER
);

「Hello World」TQLの作成

TQLエディターを開き、以下のコードを入力してhelloworld.tqlとして保存します。

FAKE(once(1))
SQL(`
  INSERT INTO HELLO
  VALUES('hi', now, 1)
  ON DUPLICATE KEY UPDATE SET
    TS = now,
    COUNT = COUNT+1
`)

スクリプトを実行すると、HELLOテーブルに1件のデータが挿入されます。 クエリで結果を確認してください。

select * from hello where name = 'hi';
sys machbase-neo 2026-09-10 17:00:09
> select * from hello where name = 'hi';
┌────────┬──────┬─────────────────────────┬───────┐
│ ROWNUM │ NAME │ TS                      │ COUNT │
├────────┼──────┼─────────────────────────┼───────┤
│      1 │ hi   │ 2026-09-10 17:00:18.918 │     1 │
└────────┴──────┴─────────────────────────┴───────┘
a row selected.

タイマーの登録

Web UI(8.0.20で導入)の設定は、以下のシェルコマンドと同じ動作になります。

以下のコマンドと同じです。

timer add helloworld "@every 5s" helloworld.tql; 

「Auto Start」オプションを選択するか、ボタンを押してタイマーを開始します。
開始すると、5秒ごとにTSとCOUNTが変化することを確認できます。

タイマーの実行結果の確認

sys machbase-neo 2026-09-10 17:00:19
> select * from hello where name = 'hi';
┌────────┬──────┬─────────────────────────┬───────┐
│ ROWNUM │ NAME │ TS                      │ COUNT │
├────────┼──────┼─────────────────────────┼───────┤
│      1 │ hi   │ 2026-09-10 17:03:24.913 │    19 │
└────────┴──────┴─────────────────────────┴───────┘
a row selected.

タイマーの管理

詳細ページで、変更・開始・停止・削除を行えます。

コマンドライン

timer listコマンドは、タイマーの状態を表示します。

sys machbase-neo» timer list;
┌────────────┬───────────┬────────────────┬───────────┬─────────┐
│ NAME       │ SPEC      │ TQL            │ AUTOSTART │ STATE   │
├────────────┼───────────┼────────────────┼───────────┼─────────┤
│ HELLOWORLD │ @every 5s │ helloworld.tql │ false     │ RUNNING │
└────────────┴───────────┴────────────────┴───────────┴─────────┘

コマンドラインからタイマーを開始・停止することもできます。

timer start helloworld;
timer stop helloworld;
最終更新日