如题,数据库用的是MySQL。其中某个表一直以周期性添加一条数据。
目前用的是轮询的方式。
题主想知道数据库是否支持类似于Java中观察者模式,当数据库添加记录后,就会自动触发某个自定义函数?
高洛峰2017-04-17 11:30:29
以下,回答都是建立在主表数据量超大的基础上。
(1) 使用mysql触发器
(2) mysql是可以运行外部脚本(可能跟用户权限和平台有关),通过脚本触发后端程序
(1) 使用mysql触发器
(2) 触发到数据后,将数据写入到内存表
(3) 后端程序轮询内存表,处理完成后,删除已经轮询的数据,防止内存表爆掉
PHP中文网2017-04-17 11:30:29
你的思路最好的解决办法应该是Hook
,做个钩子给MySQL,当数据库改变了就执行钩子程序。不过我搜了下对于给数据库直接增加Hook好像没什么好的思路。
唯一看到可行的办法是:使用Git管理你的MySQL数据库,当数据库文件发生更改的时候通过Git调用Hook。虽然可行,不过感觉略Geek了一点。
所以感觉比较简单的思路还是从你的程序上思考,当程序执行了数据库操作类中的insert()
函数后执行某个Hook函数
。也就是说不给数据库加钩子,而给程序的数据库操作类加钩子。