Comment puis-je déterminer si une table InnoDB a été modifié?

J'ai eu du succès dans le passé, le stockage de l' (fortement) de traitement des résultats d'une requête de base de données dans memcached, à l'aide de la dernière heure de mise à jour des tables sous-jacentes(s) dans le cadre de la clé de cache. Pour les tables MyISAM, qui dernière modification du temps est disponible dans SHOW TABLE STATUS. Malheureusement, c'est généralement la valeur NULL pour les tables InnoDB.

En MySQL 4.1, le ctime pour un InnoDB dans son SHOW TABLE STATUS ligne est généralement de sa dernière mise à jour de temps, mais qui ne semble pas être vrai pour MySQL 5.1.

Il y a un champ DATETIME dans la table, mais il ne s'affiche que lorsqu'une ligne a été modifiée, il ne peut pas afficher la suppression de l'heure d'une ligne qui n'est plus là! Alors, j'ai vraiment ne peut pas utiliser MAX(update_time).

Voici la partie vraiment difficile. J'ai un certain nombre de répliques que je ne lit. Je peux comprendre l'état de la table qui ne repose pas sur lorsque les modifications ont été réellement appliquées?

Ma conclusion après avoir travaillé sur cette question depuis un certain temps, c'est qu'il ne va pas être possible pour obtenir cette information, un prix aussi bas que je le voudrais. Je vais probablement mettre en cache des données jusqu'à ce que le temps que j'attends de la table pour changer (il est mis à jour une fois par jour), et de laisser le cache de requête aider à sortir de là où il peut.

OriginalL'auteur David M | 2010-05-07