MySQL 8.4 Release Notes
15.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)以及不带CHECKSUM=1
子句的MyISAM表格所获得的。
使用CHECKSUM=1
子句创建的MyISAM表格,CHECKSUM TABLE
或CHECKSUM TABLE ... QUICK
返回快速可用的““live”表格校验和。如果表格不满足这些条件,QUICK
方法返回NULL
。QUICK
方法不支持InnoDB表格。见第15.1.20节,“CREATE TABLE 语句”,了解CHECKSUM
子句的语法。
校验和值取决于表的行格式。如果行格式发生变化,校验和也会变化。例如,MySQL 5.6之前的时间类型,如TIME
、DATETIME
和TIMESTAMP
在 MySQL 5.6 中发生变化,如果将 5.5 表升级到 MySQL 5.6,校验和值可能会改变。
Important
如果两个表的校验和不同,那么它们几乎肯定是以某种方式不同的。然而,因为CHECKSUM TABLE
使用的哈希函数不保证不会冲突,所以有很小的可能性两个非 identical 表可以产生相同的校验和。