MySQL OCP888题解069-CHECK TABLE
文章目录
- 1、原题
- 1.1、英文原题
- 1.2、答案
- 2、题目解析
- 2.1、题干解析
- 2.2、选项解析
- 3、知识点
- 3.1、知识点1:CHECK TABLE语句
- 4、总结
1、原题
1.1、英文原题
1.2、答案
B、E
2、题目解析
2.1、题干解析
本题主要考察CHECK TABLE的作用和注意事项。
2.2、选项解析
- CHECK TABLE可以检查一个或多个表是否有错误,适用于InnoDB、MyISAM、ARCHIVE和CSV表。能够检查标的结构和索引,所以选项B、E正确。
3、知识点
3.1、知识点1:CHECK TABLE语句
- CHECK TABLE检查一个或多个表是否有错误。对于MyISAM表,关键统计数据也会被更新。CHECK TABLE也可以检查视图是否有问题,比如在视图定义中引用的表不再存在。
- CHECK TABLE适用于InnoDB、MyISAM、ARCHIVE和CSV表。
- 对于分区表支持CHECK TABLE,可以使用ALTER TABLE …CHECK PARTITION来检查一个或多个分区;
- 语法
CHECK TABLE tbl_name [, tbl_name] ... [option] ...
option: {
FOR UPGRADE
| QUICK
| FAST
| MEDIUM
| EXTENDED
| CHANGED
}
- CHECK TABLE返回一个具有下表所示列的结果集。语句可能为每个被检查的表产生许多行信息。最后一行的Msg_type值为status,Msg_text通常应该是OK。
- Table:表名
- Op:值永远是check
- Msg_type:status | error | info | note | warning
- Msg_text:说明文字
- FOR UPGRADE选项检查命名的表是否与当前版本的MySQL兼容。如果全面检查成功,服务器会用当前的MySQL版本号标记该表的.frm文件。标记.frm文件可以确保服务器对该表的同一版本的进一步检查是快速的。
- 检查数据的一致性:
- QUICK:不要扫描行来检查不正确的链接。适用于InnoDB和MyISAM表和视图。
- FAST:只检查那些没有被正确关闭的表。忽略InnoDB;只适用于MyISAM表和视图。
- CHANGED:仅检查自上次检查后被改变的表或没有被正确关闭的表。忽略了InnoDB;只适用于MyISAM表和视图。
- MEDIUM:扫描行以验证被删除的链接是否有效。这也是为行计算一个键的校验和,并且用计算出的键的校验和来验证它。忽略InnoDB;只适用于MyISAM表和视图。
- EXTENDED:为每一行的所有键做一个完整的键查询。这可以确保表是100%一致的,但是需要很长的时间。忽略InnoDB;只适用于MyISAM表和视图。
- 如果没有指定QUICK、MEDIUM或EXTENDED选项,MyISAM表的默认检查类型是MEDIUM。
官方参考文档
4、总结
- CHECK TABLE可以检查一个或多个表的结构或索引是否有错误,适用于InnoDB、MyISAM、ARCHIVE和CSV表。