Wie kann ich bestimmen, Wann eine InnoDB-Tabelle das Letzte mal geändert wurde?

Habe ich Erfolg hatte in der Vergangenheit die Speicherung der (stark) verarbeiteten Ergebnisse einer Datenbankabfrage in memcached, mit der letzten update-Zeit des zugrunde liegenden Tabellen(N) als Teil des cache-Schlüssels. Für MyISAM-Tabellen, zuletzt geändert Zeit zur Verfügung steht, in SHOW TABLE STATUS. Leider ist das in der Regel NULL für InnoDB-Tabellen.

In MySQL 4.1, die ctime für eine InnoDB in seiner SHOW TABLE STATUS Linie war in der Regel seine tatsächliche Letzte update-Zeit, aber das scheint nicht wahr zu sein für MySQL 5.1.

Es ist ein DATETIME-Feld in der Tabelle, aber es nur zeigt, wenn eine Zeile geändert wurde - es nicht die Löschung der Zeit von einer Zeile, die nicht mehr da ist! Also, ich kann wirklich nicht verwenden MAX(update_time).

Hier ist der wirklich interessante Teil. Ich habe eine Anzahl der Replikate, die ich tun, liest aus. Kann ich herausfinden, den Zustand der Tabelle, die sich nicht auf, wenn die änderungen tatsächlich angewendet wurden?

Mein Fazit nach der Arbeit an diesem für eine Weile ist, dass es nicht möglich sein, diese Informationen zu bekommen, wie Billig, wie ich möchte. Ich bin wahrscheinlich die Daten im cache, bis zu der Zeit, dass ich erwarte, dass die Tabelle zu ändern (es wird einmal täglich aktualisiert), und lassen Sie die Abfrage-cache helfen, wo es kann.

InformationsquelleAutor David M | 2010-05-07
Schreibe einen Kommentar