Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

15.7.3.3 CHECKSUM 表语句

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

CHECKSUM TABLE 报告表的内容的校验和。您可以使用该语句来验证在备份、回滚或其他操作之前和之后表的内容是否相同。

该语句需要表的 SELECT 权限。

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

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

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

性能考虑

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

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

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

Important

如果两个表的校验和不同,那么它们几乎肯定在某些方面不同。然而,因为CHECKSUM TABLE使用的哈希函数不能保证无碰撞,因此有微小的可能性两个不相同的表可以产生相同的校验和。