文档主页
MySQL 8.4 参考手册
相关文档 下载此手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  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 节,“CREATE TABLE 语句”

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

重要

如果两个表的校验和不同,则几乎可以肯定这两个表在某种程度上是不同的。但是,由于 CHECKSUM TABLE 使用的哈希函数不能保证无冲突,因此两个不完全相同的表可能会生成相同的校验和,这种可能性很小。