天天看点

mysql checksum_mysql8 参考手册--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。有关子句的语法, 请参见第13.1.20节“ CREATE TABLE语句”CHECKSUM。

校验和值取决于表行格式。如果行格式更改,则校验和也将更改。例如,对于时间类型,如存储格式 TIME, DATETIME以及 TIMESTAMP前到MySQL 5.6.5在MySQL 5.6改变,因此,如果5.5表升级到MySQL 5.6,校验和的值可能会改变。

重要

如果两个表的校验和不同,那么几乎可以肯定,这些表在某种程度上是不同的。但是,由于CHECKSUM TABLE不能保证使用的哈希函数 没有冲突,因此,两个不相同的表可能会产生相同的校验和。