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