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=1CHECKSUM TABLECHECKSUM TABLE
... QUICKQUICKNULLQUICKInnoDBCHECKSUM
校验和值取决于表行格式。如果行格式改变,校验和也会改变。例如,在 MySQL 5.6 之前的 MySQL 5.6 中
TIME,
DATETIME、 和
等时间类型的存储格式TIMESTAMP发生了变化,因此如果 5.5 表升级到 MySQL 5.6,校验和值可能会发生变化。
如果两个表的校验和不同,那么几乎可以肯定这些表在某些方面不同。但是,由于使用的散列函数
CHECKSUM TABLE不能保证无冲突,因此两个不相同的表有可能产生相同的校验和。