#### 13.7.3.3 CHECKSUM TABLE 语句

[](<>)

```
CHECKSUM TABLE tbl_name [, tbl_name] ... [QUICK | EXTENDED]
```

[`校验和表`](checksum-table.html)报告一个[校验和](glossary.html#glos_checksum)对于表的内容。您可以使用此语句来验证在备份、回滚或旨在将数据恢复到已知状态的其他操作之前和之后的内容是否相同。

该声明要求[`选择`](privileges-provided.html#priv_select)表的特权。

视图不支持此语句。如果你跑[`校验和表`](checksum-table.html)反对一种观点，`校验和`价值永远是`空值`，并返回警告。

对于不存在的表，[`校验和表`](checksum-table.html)返回`空值`并生成警告。

在校验和操作期间，表被一个读锁锁定`InnoDB`和`MyISAM`.

##### 性能注意事项

默认情况下，逐行读取整个表并计算校验和。对于大型表，这可能需要很长时间，因此您只会偶尔执行此操作。这种逐行计算就是你得到的`扩展`子句，与`InnoDB`以及除`MyISAM`， 与`MyISAM`不是用`校验和=1`条款。

为了`MyISAM`使用创建的表`校验和=1`条款，[`校验和表`](checksum-table.html)要么[`校验和表...快速`](checksum-table.html)返回可以非常快速返回的“实时”表校验和。如果表格不满足所有这些条件，则`快的`方法返回`空值`.这`快的`方法不支持`InnoDB`表。看[第 13.1.20 节，“CREATE TABLE 语句”](create-table.html)对于语法`校验和`条款。

校验和值取决于表行格式。如果行格式改变，校验和也会改变。例如，时间类型的存储格式，例如[`时间`](time.html),[`约会时间`](datetime.html)， 和[`时间戳`](datetime.html)在 MySQL 5.6.5 之前的 MySQL 5.6 中进行了更改，因此如果将 5.5 的表升级到 MySQL 5.6，则校验和值可能会更改。

重要的

如果两个表的校验和不同，那么几乎可以肯定这些表在某些方面是不同的。但是，由于使用的散列函数[`校验和表`](checksum-table.html)不保证不会发生冲突，两个不相同的表可能会产生相同的校验和。
