知识点十二:MySQL 表的分析,检查和优化(28)
表的分析,检查和优化:
定期分析表:
ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [,tbl_name]
定期检查表:
CHECK TABLE tbl_name [,tbl_name] [option]
备注:CHECK TABLE也可以检查视图是否有错误,比如在视图定义中引用的表已不存在。
定期优化表:
OPTIMIZE [LOCAL | NO_WRITE_TO_GINLOG] TABLE tbl_name [,tbl_name]
OPTIMIZE TABLE只对MyISAM,BDB和InnoDB起作用。
对于MyISAM表,OPTIMIZE TABLE按如下方式操作:
如果表已经删除或分解了行,则修复表。
如果未对索引页进行分类,则进行分类。
如姑表的统计数据没有更新(并且通过对索引进行分类不能实现修复),则进行更新。
备注:
需要注意的是无论ANALYZE,CHECK还是OPTIMIZE在执行期间将对表进行锁定,因此请注意这些操作要在数据库不繁忙的时候执行。
获取表的相关信息:
SHOW TABLE STATUS 获取表的信息;
SHOW TABLE STATUS LIKE ‘tablename’\G
1.Name:表名称
2.Engine:表的存储引擎
3.Version:版本
4.Row_format:行格式。对于MyISAM引擎,这可能是Dynamic,Fixed或Compressed。动态的行长度可变,例如Varchar或Blob类型字段。固定行是指行长度不变,例如Char和Integer类型字段。
5.Rows:表中的行数。对于非事务性表,这个值时精确的,对于事务性引擎,这个值通常时估算的。
6.Avg_row_length:平均每行的字节数
7.Date_length:整个表的数据量(单位:字节)
8.Max_data_length:表可以容纳的最大数据量
9.Index_length:索引占用磁盘的空间
10.Data_free:对于MyISAM引擎,标识已分配,但现在未使用的空间,并且包含了已被删除行的空间。
11.Auto_increment:下一个Auto_increment的值
12.Create_time:表的创建时间
13.Updata_time:表的最近更新时间
14.Check_time:使用check table或myisamchk工具检查表的时间
15.Collation:表示默认字符集和排序规则
16.Checksum:如果启用,则对整个表的内容计算时的校验和
17.Create_options:指表创建时的其他所有选项
18.Comment:包含了其他额外信息,对于MyISAM引擎,包含了注释徐标新,如果表使用的时InnoDB引擎,将显示表的剩余空间。
如果是一个视图,注释里边包含VIEW字样。