我在过去成功地将数据库查询的(重度)处理结果存储在memcached中,使用基础表的最后更新时间作为缓存键的一部分.对于MyISAM表,可以使用上次更改的时间SHOW TABLE STATUS.不幸的是,InnoDB表通常为NULL.
在MySQL 4.1中,InnoDB的ctime SHOW TABLE STATUS通常是它的实际上次更新时间,但对于MySQL 5.1来说似乎并非如此.
表中有一个DATETIME字段,但它只显示修改行的时间 - 它不能显示不再存在的行的删除时间!所以,我真的不能用MAX(update_time).
这是非常棘手的部分.我有许多复制品,我从中读取.我可以找出实际应用更改时不依赖的表的状态吗?
经过一段时间的研究后,我得出的结论是,不可能像我想的那样便宜地得到这些信息.我可能会将数据缓存,直到我希望表更改(它每天更新一次)为止,并让查询缓存帮助它.