7

ファイルの変更を監視するinotifyメソッドに似たソリューションを探しています。mysql データベースの binlog ファイルを監視し、クエリを実行して新しい結果を取得できることは承知していますが、それは非常に非効率的で洗練されていないようです。新しい結果を待っているループで大量のクエリを実行するだけです。

4

3 に答える 3

6

関心のあるテーブルにTRIGGERを追加すると、それを使用して監視アプリケーションにアラートを出すことができます。あなたはいくつかの方法でそれを行うことができます:

  1. データベースに監査テーブルを作成し、トリガーに関連情報をそこに書き込みます。監視アプリケーションに新しいエントリの監査テーブルをポーリングさせます。あなたはまだポーリングしていますが、サーバーに大きな影響を与えないように制御された方法で.
  2. トリガーが UDF を介して外部アプリを呼び出すようにします。
于 2010-12-17T13:09:50.793 に答える
1

MyISAM テーブルに関する限り、見ることができますinformation_schema.TABLES.UPDATE_TIME。これにより、関心のあるすべてのテーブルをポーリングする必要がなくなります。InnoDB の場合、binlog を監視することが最善だと思います。

于 2010-12-11T20:07:15.637 に答える
0

別のアプローチは、DB ポーリングの代わりにプッシュ/シグナルを行うことです。どんなプロセスでもデータベースを更新し、選択した任意の IPC を介して更新が行われたことを Perl コードに通知します (変更されたテーブルの名前が追加されたログ ファイルは、十分にうまくいくかもしれません)。

これは、更新がかなりまれ/少量であるが、それらへの応答時間が迅速でなければならない場合に特に効果的です。

追加の利点は、移植性です。任意の MySQL バックエンドまたはその他の DB エンジンで動作します。

于 2010-12-11T20:16:36.687 に答える