有许多表,可能有50多个表是由代码读取和写入的,这有点太难快速理解了。不幸的是,许多表没有时间戳列。当代码每天运行一次时,我想知道它们中的哪一个正在被修改。
所以我尝试了这个解决方案
SELECT update_time FROM information_schema.tables WHERE table_name='tablename'...which执行了,但返回了Null。是否可以在MySQL服务器上运行一些简单的命令,以便它能够实际开始保存并保存它,以便我可以在几天内检查它?
发布于 2018-01-31 16:36:41
答案是:嗯,这取决于。不幸的是,MySQL update_time字段上的information_schema.tables文档并不太详细,但是,您可以在关于显示表状态语句的文档中找到相关信息,该语句还从information_schema.tables视图检索数据:
上次更新数据文件的时候。对于某些存储引擎,此值为空。例如,InnoDB在其系统表空间中存储多个表,并且不应用数据文件时间戳。即使在每个InnoDB表都位于一个单独的.ibd文件中的按表模式下,更改缓冲也会延迟对数据文件的写入,因此文件修改时间与上次插入、更新或删除的时间不同。对于MyISAM,使用的是数据文件时间戳;但是,在Windows上,时间戳不会通过更新更新,因此值不准确。
概括地说:如果您想将它与innodb一起使用,那么您必须使用文件-每表模式来显示这些数据(即使这样,它也将是不准确的)。MyISAM应该很好(除非您正在使用Windows)。没有提到其他存储引擎。
在大型数据库上启用文件按表模式将是一个相当大的挑战,您可能需要备份表,删除它们,更改设置,然后再导入它们。因此,在匆忙进行此操作之前,您必须认真评估此功能是否值得进行更改。此外,我的理解是,即使启用了文件/表模式,InnoDB也只支持5.7.2版本的此属性,这是开发人员对此功能请求的上一次注释。
2014年9月15日5:21开发商张贴的Marko M kel: WL#6658在MySQL 5.7.2中为InnoDB表实现了update_time。请注意,在服务器重新启动期间,它不是持久的。WL#6917是因为使update_time持久化而提交的。
https://stackoverflow.com/questions/48546492
复制相似问题