【发布时间】:2011-05-24 01:07:38
【问题描述】:
我正在寻找一种类似于 inotify 方法来监视文件以进行更改的解决方案。我知道我可以查看 mysql 数据库的 binlog 文件并运行查询以挑选出新结果,但这似乎非常低效和不优雅;就像在循环中执行大量查询以等待新结果一样。
【问题讨论】:
标签: mysql database perl inotify
我正在寻找一种类似于 inotify 方法来监视文件以进行更改的解决方案。我知道我可以查看 mysql 数据库的 binlog 文件并运行查询以挑选出新结果,但这似乎非常低效和不优雅;就像在循环中执行大量查询以等待新结果一样。
【问题讨论】:
标签: mysql database perl inotify
如果您将TRIGGER 添加到您感兴趣的表中,您可以使用它来提醒正在观看的应用程序。您可以通过多种方式做到这一点:
【讨论】:
就 MyISAM 表而言,您可以观看 information_schema.TABLES.UPDATE_TIME。这样你就不用轮询你感兴趣的所有表了。对于 InnoDB,看 binlog 是我能想到的最好的方法。
【讨论】:
另一种方法是执行推送/信号而不是数据库轮询。让任何进程更新数据库,通知您的 Perl 代码通过您选择的任何 IPC 完成了更新(哎呀,附加到更改表名称的日志文件可能足够好)。
如果更新相当少见/数量很少,但对它们的反应时间必须很快,这将特别有效。
另一个好处是可移植性 - 适用于任何 MySQL 后端或任何其他数据库引擎。
【讨论】: