Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


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返回快速可用的““live”表格校验和。如果表格不满足这些条件,QUICK方法返回NULLQUICK方法不支持InnoDB表格。见第15.1.20节,“CREATE TABLE 语句”,了解CHECKSUM子句的语法。

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

Important

如果两个表的校验和不同,那么它们几乎肯定是以某种方式不同的。然而,因为CHECKSUM TABLE 使用的哈希函数不保证不会冲突,所以有很小的可能性两个非 identical 表可以产生相同的校验和。