MYSQL 8 優化之05 (定期analyze 、 check、optimize 表)

  1. analyze 表【对 InnoDB, NDB, 和 MyISAM 表 有作用】
#语法
analyze [local | no_write_to_binlog] table tbl_name [,tbl_name] ...
#上面语句用于-->分析和存储表的键值分布,mysql使用存储的键值分布来决定当进行连接的顺序,也会决定查询中使用哪个索引。 
#默认情况下会把analyze table的语句写入到二进制日志中去
#分析期间使用一个读锁对表进行锁定
[email protected] : testdb【10:48:58】5 SQL->ANALYZE TABLE mp_user;
  1. check 表【对 InnoDB, MyISAM 表 有作用,也可检查视图】
#语法
check table tbl_name [,tbl_name] ... option={quick|fast|medium|extended|changed}
#检查表的作用是检查表是否存有错误
#表
[email protected] : testdb【10:50:01】8 SQL->check table mp_user;
+----------------+-------+----------+----------+
| Table          | Op    | Msg_type | Msg_text |
+----------------+-------+----------+----------+
| testdb.mp_user | check | status   | OK       |
+----------------+-------+----------+----------+

#视图
[email protected] : testdb【11:02:15】16 SQL->check table v_mp_user;
+------------------+-------+----------+----------+
| Table            | Op    | Msg_type | Msg_text |
+------------------+-------+----------+----------+
| testdb.v_mp_user | check | status   | OK       |
+------------------+-------+----------+----------+
  1. optimize 表 【对 InnoDB, NDB, 和 MyISAM 表 有作用】
#语法
optimize [local | no_write_to_binlog] table tbl_name [,tbl_name] ...
#重新组织表和相关索引的物理存储的。为了减少存储空间和提高io效率
# 如果已删除了表的一大部分,或对含有可变长度的表(含有varchar、blob、text列的表)进行了很多修改,则应使用optimize 命令优化表
[email protected] : testdb【11:09:21】19 SQL->optimize table mp_user;
+----------------+----------+----------+-------------------------------------------------------------------+
| Table          | Op       | Msg_type | Msg_text                                                          |
+----------------+----------+----------+-------------------------------------------------------------------+
| testdb.mp_user | optimize | note     | Table does not support optimize, doing recreate + analyze instead |
| testdb.mp_user | optimize | status   | OK                                                                |
+----------------+----------+----------+-------------------------------------------------------------------+

  1. alter 方式回收不用的空间 【对 InnoDB表 有作用】
#对InnoDB引擎的表,通过设置innodb_file_per_table参数,设置innodb 为独立表空间模式的表存在删除大量数据后可用 alter 命令回收空间
[email protected] : testdb【11:14:41】22 SQL->alter table mp_user engine=innodb;

说明analyze 、 check、optimize 、alter 表执行期间将对表进行锁定【正常应在非繁忙时间段操作此类命令】

你可能感兴趣的:(MYSQL 8 優化之05 (定期analyze 、 check、optimize 表))