MySQL有没有一种机制,当某些数据更新时,通知连接到MySQL的应用程序?

jupipe_guanly 2018-01-10 07:39:05
MySQL有没有一种机制,当某些数据更新时,通知连接到MySQL的应用程序,而不需要应用程序循环查询这些数据的情况?
...全文
1713 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 2018-01-22
  • 打赏
  • 举报
回复
另外一种可选的办法是研究 MySQL 的 binlog,自己写程序把自己伪装成 slave , 从数据库拉 binlog 获取数据变化 阿里有一个类似的东东,如果你的开发功底深厚,可以借鉴 http://agapple.iteye.com/blog/1796633
zjcxc 2018-01-22
  • 打赏
  • 举报
回复
SqlDependency 在 SQL Server 2005 之前版本的实现,是用触发器+轮询实现,你也可以考虑一下这种方法: 1. 所有要数据通知的表上建立触发器,在数据变化时,将数据变化的主键写和表名写入一个记录表 2. 程序轮询这个记录表,如果有检查到数据变化,则触发事务通知变化的记录表名和id 这样触发器简单,开销小,轮询不在业务表上进行,也避免了一些不必要的影响
ChinaITOldMan 2018-01-22
  • 打赏
  • 举报
回复
好象没有哦,应该通过程序实现
trainee 2018-01-22
  • 打赏
  • 举报
回复
MySQL 里没有 PostgreSQL有此功能, 在服务器层有 LISTEN / NOTIFY 语句 , 同时我改写了PSQLODBC, 在ODBC中封装NOTIFY/LISTEN , 在C/S结构中完美支持此功能 可参考 我的blog http://blog.csdn.net/trainee/article/details/1567565
传说之心 2018-01-20
  • 打赏
  • 举报
回复
数据库肯定没有,你要自己实现,大项目不会做立即持久化而是把操作都在缓存中进行然后批量提交操作到一个事物,这属于直接在程序中做事物控制,这时候你就可以在事物中增加事件的机制,比如.net中有dataset这个类型可以缓存数据库数据和各种数据库操作,而且这个类型还有很多事件,什么行改变事件啦行删除事件啦等等,但凡这种通知的操作必定都是在程序中作最好,就算是触发器都不推荐用,因为触发器可能会引起一些级联的反应,而且触发器的通知只限于数据库内而不会通知应用程序
zjcxc 2018-01-11
  • 打赏
  • 举报
回复
引用 5 楼 yenange 的回复:
[quote=引用 4 楼 zjcxc 的回复:] sql server 的 SqlDependency 实现也最终是用的轮询
SqlDependency 是事件通知吧, 至少用起来没看到有轮询。具体的内部实现就不知道了。[/quote] 轮询的,它是通过 Service Broker 做的,轮询的是 Queue, 可以通过 PROFILER 看到轮询的请求,事务通知是从组件中发出,不是从数据库服务器触发
吉普赛的歌 2018-01-11
  • 打赏
  • 举报
回复
引用 4 楼 zjcxc 的回复:
sql server 的 SqlDependency 实现也最终是用的轮询
SqlDependency 是事件通知吧, 至少用起来没看到有轮询。具体的内部实现就不知道了。
zjcxc 2018-01-11
  • 打赏
  • 举报
回复
sql server 的 SqlDependency 实现也最终是用的轮询
吉普赛的歌 2018-01-11
  • 打赏
  • 举报
回复
SQLServer 可以用 SqlDependency 。 MySQL 只能自己加触发器, 将相关信息放到自己定义的日志表里面, 轮询日志表来实现了。
zjcxc 2018-01-11
  • 打赏
  • 举报
回复
我所知道的没有
吉普赛的歌 2018-01-11
  • 打赏
  • 举报
回复
引用 6 楼 zjcxc 的回复:
[quote=引用 5 楼 yenange 的回复:] [quote=引用 4 楼 zjcxc 的回复:] sql server 的 SqlDependency 实现也最终是用的轮询
SqlDependency 是事件通知吧, 至少用起来没看到有轮询。具体的内部实现就不知道了。[/quote] 轮询的,它是通过 Service Broker 做的,轮询的是 Queue, 可以通过 PROFILER 看到轮询的请求,事务通知是从组件中发出,不是从数据库服务器触发 [/quote] 佩服, 研究得好深入
ZHOU西口 2018-01-10
  • 打赏
  • 举报
回复
mysql不会实现这种机制的,应用始终是数据的读写方,消息驱动只能由应用发起。

56,675

社区成员

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

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