我有,我可以校验和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