mysql - innodb 表最后修改日期

标签 mysql innodb

如何确定 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/

相关文章:

MySQL UNIQUE KEY 设计 : compound INT + VARCHAR key vs. 单列 VARCHAR 键

mysql - 为什么用复合语句创建EVENT会出现这个错误?

SQL 非关联数据表中的两个字段到同一个字段?

php - MySQL 不接受 PHP 查询

mysql - 在 MySQL 中,您能否仅使用一次比较来检查字段是否为 NULL 或空?

mysql innodb 插入语句需要很长时间

mysql 数据库 innodb myisam 性能

mysql - mysql 事务期间锁定表

mysql - 设置表关系 "Cascade"、 "Set Null"和 "Restrict"做什么?

c# - 如何从网络服务返回多个字符串?