应用程序如何感知mysql数据库变化?

rwxdfbb 2013-09-25 10:55:26
现在有一Mysql数据库,数据库完全敞开,很多人、很多方式都可以更改数据库中的表,比如可以通过命令行、web服务器或者第三方软件phpmyadmin等更改信息,可以本地修改也可以远程修改。现在问题是:当数据库发生变化时,如何通知应用程序(应用程序采用C语言,暂时假定数据库和应用程序在同一台机子)?
初步考虑,同时参考网上资源,基本有以下几种方法:
1、直接轮询各个表是否有变化
2、监控mysql日志
3、触发器,每个表建一个触发器,所有这些表触发器放在一张表,监控这张表

对于以上几种方法,均感不爽,基本上都要轮询,轮询就意味着效率低下,因此拒绝轮询方式。最近有个想法:想通过触发器调用一个存储过程函数,但存储过程功能也十分有限,有没有这种可能:存储过程能调用第三方语言或者能产生一个系统调用,比如像信号、事件什么的,让应用程序能够捕获这个变化?请教高手!有没有更高明的方法。
...全文
394 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
藏红 2014-11-25
  • 打赏
  • 举报
回复
请问楼主是否有找到方法????有同样的问题
ACMAIN_CHM 2013-09-25
  • 打赏
  • 举报
回复
MYSLQ本身不提供, 不管是触发器,轮询,监控日志 最终就是客户端软件不断的查询状态。 如果不用客户端主动轮询,则只能想办法修改MYSQL的源代码,加入一个消息发送功能。
rucypli 2013-09-25
  • 打赏
  • 举报
回复
用触发器。。。。
rwxdfbb 2013-09-25
  • 打赏
  • 举报
回复
这个功能应该很有用啊,不知道mysql更新这么久,为什么不加入这个功能呢,oracle好像可以外调C语言的

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧