在主从复制中Checksum经常须要对某些重要的表进行一致性检查。操作系统
Checksum table计算返回值的逻辑大体以下:code
ha_checksum crc= 0; foreach(row in table) { row_crc= get_crc(row); crc+= row_crc; } return crc;
能够看到只要总行数以及行内容相同,与读取行的顺序无关。索引
从这个逻辑还能获得一下几个结论: 1)与使用的引擎无关,也就是说即便主备不用同一个引擎,checksum也可用于检查。虽然InnoDB有隐藏行,但这里无视。get
2)与是否有索引无关。row_crc只用行自己的数据来计算,并不包括索引数据。 也就是说若是可以保证两个表里面的数据同样,表结构(列内容和顺序同样),操做系统同样,MySQL版本一致,是可以保证checksum的结果的。table