(Mysql) 存储 table 更改的最有效方法是什么?

(Mysql) What is the most efficient way to store table changes?

我正在使用 mysql 开发 Web 应用程序,我有几个 table,包括 userarticle.

由于要记录更新了所选文章的用户,我想到了三种可能:

个人认为,第三个是多余的,第一个概念化的很烂(只保留最后一处改动)。尽管第二个似乎只适用于一个 table(文章),但如果必须保存更改超过 30 个,恐怕它会变得更加复杂和非常慢tables -- 这意味着 changes table 将有 30 个外键(?!)

最好的方法是什么?你对此有何看法?

你真的想知道每个修改文章的人吗?如果答案是肯定的,你必须使用第二个,我认为最好的选择是第一个(考虑速度,时间)并且我以为你只需要知道最后修改文章的人就可以了

为此,

MySQL 有一个称为 Audit Log 的功能。这个想法是 "audit" 这是一系列数据更改事件,被写入数据库外部的日志文件。这样您就可以检查日志中的更改,可以看到对同一数据的多个更改,可以使日志过期等等。

审计日志需要一个插件实现来完成它的工作。 MySQL 制作企业审计插件,但它不是免费的——您必须成为付费客户才能获得 MySQL Enterprise。

审计日志插件实现也有一些免费替代方案。

您不妨试试 Percona Audit Log Plugin。这是 Percona Server(MySQL 社区版的一个分支)附带的可选插件。您只需启用插​​件即可。

安装和配置文档:https://www.percona.com/doc/percona-server/5.7/management/audit_log_plugin.html