我過去曾成功地在memcached中存儲數據庫查詢的(嚴重)處理結果,使用基礎表的最後一次更新時間作爲緩存鍵的一部分。對於MyISAM表格,最後更改的時間在SHOW TABLE STATUS
。不幸的是,InnoDB表通常是NULL。如何確定InnoDB表最後一次更改的時間?
在MySQL 4.1中,InnoDB在其SHOW TABLE STATUS
行中的ctime通常是其實際的最後更新時間,但對於MySQL 5.1似乎並不正確。
表中有一個DATETIME字段,但它只在行被修改時顯示 - 它不能顯示不存在的行的刪除時間!所以,我真的不能使用MAX(update_time)
。
這是非常棘手的部分。我有一些我從中讀取的副本。我可以計算出實際應用更改時不依賴的表的狀態嗎?
在我研究了一段時間之後,我的結論是不可能像我想的那樣便宜地獲取這些信息。我可能會緩存數據,直到我希望表更改(它每天更新一次),並讓查詢緩存幫助解決問題。
記住,如果要在2.nd路線約InnoDB的觸發器: 「注意目前,級聯外鍵操作不激活觸發器。」 (來自[13.2.2.5。FOREIGN KEY Constraints](http://dev.mysql.com/doc/refman/5.6/en/innodb-foreign-key-constraints.html)) – 2011-11-25 16:19:43