Documentation Home

13.7.3.3 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创建的表 ,或 返回可以非常快速返回的实时”表校验和。如果表不满足所有这些条件,该方法将返回。 表不支持该方法。有关该子句 的语法, 请参阅第 13.1.20 节,“CREATE TABLE 语句” 。CHECKSUM=1CHECKSUM TABLECHECKSUM TABLE ... QUICKQUICKNULLQUICKInnoDBCHECKSUM

校验和值取决于表行格式。如果行格式改变,校验和也会改变。例如,在 MySQL 5.6 之前的 MySQL 5.6 中 TIMEDATETIME、 和 等时间类型的存储格式TIMESTAMP发生了变化,因此如果 5.5 表升级到 MySQL 5.6,校验和值可能会发生变化。

重要的

如果两个表的校验和不同,那么几乎可以肯定这些表在某些方面不同。但是,由于使用的散列函数 CHECKSUM TABLE不能保证无冲突,因此两个不相同的表有可能产生相同的校验和。