CHECKSUM TABLE tbl_name [, tbl_name] ... [QUICK | EXTENDED]
CHECKSUM TABLE
报告
表内容的校验和。您可以使用此语句来验证备份、回滚或旨在将数据恢复到已知状态的其他操作前后内容是否相同。
此语句需要
SELECT
表的特权。
视图不支持此语句。如果
CHECKSUM TABLE
针对视图运行,则Checksum
值始终为
NULL
,并返回警告。
对于不存在的表,CHECKSUM
TABLE
返回NULL
并生成警告。
在校验和操作期间,表被 和 的读锁InnoDB
锁定
MyISAM
。
默认情况下,逐行读取整个表并计算校验和。对于大表,这可能需要很长时间,因此您只能偶尔执行此操作。这种逐行计算是通过EXTENDED
子句、
InnoDB
除 之外的所有其他存储引擎MyISAM
以及
MyISAM
未使用该
CHECKSUM=1
子句创建的表得到的结果。
对于使用子句
MyISAM
创建的表
,或
返回可以非常快速返回的“实时”表校验和。如果表不满足所有这些条件,该方法将返回。
表不支持该方法。有关该子句
的语法,
请参阅第 13.1.20 节,“CREATE TABLE 语句” 。CHECKSUM=1
CHECKSUM TABLE
CHECKSUM TABLE
... QUICK
QUICK
NULL
QUICK
InnoDB
CHECKSUM
校验和值取决于表行格式。如果行格式改变,校验和也会改变。例如,在 MySQL 5.6 之前的 MySQL 5.6 中
TIME
,
DATETIME
、 和
等时间类型的存储格式TIMESTAMP
发生了变化,因此如果 5.5 表升级到 MySQL 5.6,校验和值可能会发生变化。
如果两个表的校验和不同,那么几乎可以肯定这些表在某些方面不同。但是,由于使用的散列函数
CHECKSUM TABLE
不能保证无冲突,因此两个不相同的表有可能产生相同的校验和。