文档主页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  ...  /  CHECKSUM TABLE 语句

15.7.3.3 CHECKSUM TABLE 语句

CHECKSUM TABLE tbl_name [, tbl_name] ... [QUICK | EXTENDED]

CHECKSUM TABLE 报告表的 校验和。您可以使用此语句验证在备份、回滚或旨在将数据恢复到已知状态的其他操作之前和之后内容是否相同。

此语句需要表的 SELECT 权限。

此语句不支持视图。如果您对视图运行 CHECKSUM TABLE,则 Checksum 值始终为 NULL,并返回警告。

对于不存在的表,CHECKSUM TABLE 返回 NULL 并生成警告。

在校验和操作期间,表将被 InnoDBMyISAM 以读锁锁定。

性能注意事项

默认情况下,整个表会按行读取并计算校验和。对于大型表,这可能需要很长时间,因此您应该只偶尔执行此操作。这种逐行计算是使用EXTENDED子句,以及InnoDB和所有其他存储引擎(MyISAM除外)以及未创建CHECKSUM=1子句的MyISAM表时获得的结果。

对于使用CHECKSUM=1子句创建的MyISAM表,CHECKSUM TABLECHECKSUM TABLE ... QUICK会返回可以快速返回的实时表校验和。如果表不满足所有这些条件,则QUICK方法将返回NULLQUICK方法不支持InnoDB表。有关CHECKSUM子句的语法,请参见第 15.1.20 节,“创建表语句”

校验和值取决于表的行格式。如果行格式发生更改,校验和也会更改。例如,在 MySQL 5.6.5 之前的 MySQL 5.6 中,时间类型(例如TIMEDATETIMETIMESTAMP)的存储格式发生了更改,因此,如果将 5.5 表升级到 MySQL 5.6,则校验和值可能会发生更改。

重要

如果两个表的校验和不同,则几乎可以肯定这两个表在某些方面不同。但是,由于CHECKSUM TABLE使用的哈希函数无法保证无冲突,因此,两个不完全相同的表也可能产生相同的校验和。