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
不能保证使用的哈希函数没有冲突,因此,两个不相同的表可能会产生相同的校验和。