大規模なシステムでは,定時や定期に実行する業務がある。例えば,始業の準備としてデータベースの内容を整備したり,一日の終わりに 集計処理を 行ったりと様々である。定期的に速報を出すような業務もあるだろう。これまで,このような場合,OSなどMySQL以外の機能を利用して,実施するしかな かった。しかし,MySQL 5.1には,定時や定期にSQLステートメントを実行するためのイベント(EVENT)が実装されている。

 今回は,数々あるMySQL 5.1の新機能の中でイベント(EVENT)を紹介する。

イベントとは

 MySQL 5.0では,新機能としてストアド・プロシジャ(ファンクション)およびトリガがサポートされた。ストアドプロシジャは,必要な時に呼び出すサブルーチン 的 な位置付けだ。一連のデータベース処理をひとまとめに定義して,簡単に呼び出す機能だ。それに対してトリガは,テーブルのデータが更新(INSERT, DELETE,UPDATE)されたときに自動的に実行する。詳しくは,本連載の第5回「MySQL 5.0の新機能ストアドプロシジャ」および第16回「MySQL 5.0ベータ版リリース,新機能トリガとビューを試す」を参照してほしい。

 イベントは,日付や時間に起因して自動的に実行される。イベントによって,一連のデータベース処理を定時実行や定期実行することが可能だ。さらに,一定 間隔で処理を繰り返すこともできる。

図1●ストアド・プロシジャ,トリガ,イベント

 イベントには,付随する2つの利点がある。

  • イベント機能が提供されていない場合に定時実行や定期実行を行うには,OSが提供する機能を使用するしかない。例えば,Linuxの 場合には, Cronを使用して実行するのが一般的だ。Windowsでは,タスクマネージャを使用する。イベントを使用すれば,MySQLサイドで解決する。OS固 有の知識を必要としない。
  • イベントは,MYSQLDUMPコマンドによってバックアップできる。そのため,MySQL以外の特別な知識を要せずに運用が可能で ある。異なるOS間でも簡単に移植することが可能だ。