13.7.2.3 CHECKSUM TABLE 语句
CHECKSUM TABLE tbl_name [, tbl_name] ... [QUICK | EXTENDED]
CHECKSUM TABLE报告 table 内容的checksum。您可以使用此语句来验证备份,回滚或其他旨在将数据恢复为已知状态的操作前后的内容是否相同。
该语句要求 table 具有SELECT特权。
视图不支持该语句。如果对视图运行CHECKSUM TABLE,则Checksum
的值始终为NULL
,并返回警告。
对于不存在的 table,CHECKSUM TABLE返回NULL
并生成警告。
在校验和操作期间,table 被InnoDB
和MyISAM
的读锁锁定。
Performance Considerations
默认情况下,整个 table 逐行读取,并计算校验和。对于大 table,这可能需要很长时间,因此您只会偶尔执行此操作。这种逐行计算是通过EXTENDED
子句,InnoDB
和除MyISAM
之外的所有其他存储引擎以及未使用CHECKSUM=1
子句创建的MyISAM
table 获得的。
对于使用CHECKSUM=1
子句创建的MyISAM
table,CHECKSUM TABLE或支票 table...快速返回“活动”table 校验和,该校验和可以非常快速地返回。如果 table 不满足所有这些条件,则QUICK
方法返回NULL
。 InnoDB
table 不支持QUICK
方法。有关CHECKSUM
子句的语法,请参见第 13.1.18 节“ CREATE TABLE 语句”。
校验和值取决于 table 行格式。如果行格式更改,则校验和也将更改。例如,时间类型(例如TIME,DATETIME和TIMESTAMP)的存储格式在 MySQL 5.6 之前的 MySQL 5.6.5 中已更改,因此,如果将 5.5table 升级到 MySQL 5.6,则校验和值可能会更改。
Important
如果两个 table 的校验和不同,那么几乎可以肯定,这些 table 在某种程度上是不同的。但是,由于不能保证CHECKSUM TABLE所使用的哈希函数没有冲突,因此,两个不完全相同的 table 可能会产生相同的校验和。