我有这样的问题。
我正在访问一个数据库,该数据库当前在新条目表中有超过 100,000 个数据。
现在我想写一个监听器,这意味着如果有任何新记录从其他地方插入到表中,我必须得到一个通知。
我的问题是:最好和最快的方法是什么?因为一天中新条目表中应该有大约 500 个新数据。是否适合每次使用线程检查数据库?
我使用 Java 和 MySQL 来做到这一点。
请给我建议。
我有这样的问题。
我正在访问一个数据库,该数据库当前在新条目表中有超过 100,000 个数据。
现在我想写一个监听器,这意味着如果有任何新记录从其他地方插入到表中,我必须得到一个通知。
我的问题是:最好和最快的方法是什么?因为一天中新条目表中应该有大约 500 个新数据。是否适合每次使用线程检查数据库?
我使用 Java 和 MySQL 来做到这一点。
请给我建议。
我不确定是否存在任何用于 Mysql 更改的侦听器。因此,获取这些详细信息并不容易。
但是在 mysql 中有一个叫做“二进制日志”的东西,它包含描述数据库更改的“事件”,例如表创建操作或表数据的更改。
因此,跟踪更改的一种方法是轮询这些日志。挑战在于这些日志是以二进制格式编写的。Mysql 提供了一个名为mysqlbinlog的实用程序来处理这些文本格式的日志。
这是一个用于救援的 java 解析器,它可以读取 mysql 二进制日志:
https://github.com/tangfl/jbinlog
整合所有这些点点滴滴,你也许能够得到你需要的东西。
我使用 java timer 类作为此解决方案的替代方案。现在它工作正常。它每 10 秒检查一次数据库,如果条件为真,它将执行我想要的。
试试这个...
numero = stmt.executeUpdate(query, Statement.RETURN_GENERATED_KEYS);
查看 JDBC Statement 接口的文档。