使用引擎myisam或innodb获取MySQL中数据库最近24小时内更新的表列表

时间:2014-05-28 23:01:41

标签: php mysql innodb myisam

我尝试了一个php脚本,如:

$res=mysql_query("SELECT TABLE_NAME 
                  FROM  information_schema.'TABLES' 
                  WHERE  UPDATE_TIME > NOW() - INTERVAL 2 DAY 
                  AND  ABLE_SCHEMA = 'mvgis_lewiscounty'");

无效。

任何人都可以指导我如何处理这个问题?

1 个答案:

答案 0 :(得分:3)

没有使用适用于InnoDB和MyISAM的INFORMATION_SCHEMA的解决方案。

InnoDB表的UPDATE_TIME未更新。 InnoDB表的更新时间是主观的。是时候有人上次做了UPDATE吗?是时候更新COMMIT了吗?是将更改刷新到表空间的时间吗?

最好使用shell命令,例如:

$ find /var/lib/mysql -name '*.ibd' -mtime -1

另一种解决方案是让所有表都有一个触发器来更新每个表名一行的汇总表,以记录最新的INSERT / UPDATE / DELETE。

另见How can I tell when a MySQL table was last updated?