应用程序如何感知mysql数据库变化?
现在有一Mysql数据库,数据库完全敞开,很多人、很多方式都可以更改数据库中的表,比如可以通过命令行、web服务器或者第三方软件phpmyadmin等更改信息,可以本地修改也可以远程修改。现在问题是:当数据库发生变化时,如何通知应用程序(应用程序采用C语言,暂时假定数据库和应用程序在同一台机子)?
初步考虑,同时参考网上资源,基本有以下几种方法:
1、直接轮询各个表是否有变化
2、监控mysql日志
3、触发器,每个表建一个触发器,所有这些表触发器放在一张表,监控这张表
对于以上几种方法,均感不爽,基本上都要轮询,轮询就意味着效率低下,因此拒绝轮询方式。最近有个想法:想通过触发器调用一个存储过程函数,但存储过程功能也十分有限,有没有这种可能:存储过程能调用第三方语言或者能产生一个系统调用,比如像信号、事件什么的,让应用程序能够捕获这个变化?请教高手!有没有更高明的方法。