首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将MySQL设置为持久化所有表的update_time

问将MySQL设置为持久化所有表的update_time
EN

Stack Overflow用户
提问于 2018-01-31 16:05:17
回答 1查看 853关注 0票数 1

有许多表,可能有50多个表是由代码读取和写入的,这有点太难快速理解了。不幸的是,许多表没有时间戳列。当代码每天运行一次时,我想知道它们中的哪一个正在被修改。

所以我尝试了这个解决方案

代码语言:javascript
复制
SELECT update_time FROM information_schema.tables WHERE table_name='tablename'

...which执行了,但返回了Null。是否可以在MySQL服务器上运行一些简单的命令,以便它能够实际开始保存并保存它,以便我可以在几天内检查它?

EN

回答 1

Stack Overflow用户

发布于 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持久化而提交的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48546492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档