我有,我可以校驗和InnoDB的基礎表:如何快速校驗和MySQL的InnoDB表與數百萬條記錄
checksum table _table_name_
也就是說萬一百萬的記錄慢駐留在表中。我想知道是否有任何方法可以識別桌子是否被改變?
我需要快速而便宜的東西來請求,並且每次改變表格的任何記錄時都會發生變化。我沒有找到任何InnoDB表格。有什麼嗎?
問候 菲利克斯
我有,我可以校驗和InnoDB的基礎表:如何快速校驗和MySQL的InnoDB表與數百萬條記錄
checksum table _table_name_
也就是說萬一百萬的記錄慢駐留在表中。我想知道是否有任何方法可以識別桌子是否被改變?
我需要快速而便宜的東西來請求,並且每次改變表格的任何記錄時都會發生變化。我沒有找到任何InnoDB表格。有什麼嗎?
問候 菲利克斯
MySQL的存儲更高版本的每次更新表中的時間戳:
SELECT UPDATE_TIME
FROM information_schema.tables
WHERE TABLE_SCHEMA = 'dbname'
AND TABLE_NAME = 'tabname'
如果餐桌上的時間戳(比如LastUpdateTS
),使用默認設置創建,和它的索引,那麼這應該是相當快的。它將只捕獲插入和更新,但不刪除,但:
SELECT MAX(LastUpdateTS)
FROM TableX
從MySQL Docs, Timestamp Properties
:
在
CREATE TABLE
聲明,第一TIMESTAMP
列可以在以下任何一種方式聲明:對於
DEFAULT CURRENT_TIMESTAMP
和ON UPDATE CURRENT_TIMESTAMP
子句,該列具有其默認值的當前時間戳,並自動更新。
如果你想趕上表中的任何改變(包括刪除),觸發可能是最好的解決方案。每當INSERT
,UPDATE
或DELETE
語句在表上作用時,觸發器都可以更新輔助表。
Thx的建議。如果數據庫的負載很重,我不知道3個附加觸發器會產生多少影響。因此,我決定添加一個時間戳列,幷包含一個表的行數以實現刪除操作。這意味着一些移民,但似乎是最好的交易。 – GeorgieF 2012-01-10 16:08:56
這似乎也很慢,並且我沒有期望NULL的很多表返回NULL。 – GeorgieF 2012-01-10 13:20:34