如何确定 innodb 表的最后修改日期?根据this问题似乎多年来一直存在未修复的错误。我无法使用校验和,因为我正在处理大型表并且计算校验和花费的时间太长。而且触发器看起来也不是正确的解决方案,因为我只是不想为大量的表编写触发器。有没有其他方法可以实现此目的?
我需要整个表(删除、插入、更新)的最后修改日期,而不是单行。
编辑:
我认为在不修改现有查询或创建触发器的情况下没有可接受的方法来确定这一点,因此仅检查表是否被修改就足够了。正如我所说,使用 CHECKSUM TABLE...
是可能的,但是对于大型 innodb 表来说它非常慢。有没有更好的算法来实现这一点?
最佳答案
尝试创建一个包装程序来执行您的语句并更新当前时间。
这回答了您的评论:
“这将阻止您为数百个表编写触发器:”
由于某些错误,卡住溢出不允许我发布此类过程的示例代码,
您可以毫无问题地“执行”该命令,我现在已经对其进行了测试并且可以正常工作。您必须以“call my_procedure('insert/update/delete ...')”
的形式执行您的过程 PREPARE s1 FROM @sql;
EXECUTE s1;
DEALLOCATE PREPARE s1;
这里是关于如何创建此类程序的链接 http://www.java2s.com/Code/SQL/Procedure-Function/EXECUTEdynamicSQLcommand.htm
您只需要使用您的参数将连接更改为空字符串。
关于mysql - innodb 表最后修改日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11759848/