mysql分析表,检测表,优化

//分析表和优化表
analyze table payment

//分析表
mysql> analyze table payment;
+----------------+---------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+----------------+---------+----------+----------+
| sakila.payment | analyze | status | OK |
+----------------+---------+----------+----------+
1 row in set (0.07 sec)


//检查表
check table tabnamel
mysql> check table payment;
+----------------+-------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+----------------+-------+----------+----------+
| sakila.payment | check | status | OK |
+----------------+-------+----------+----------+
1 row in set (0.04 sec)

//优化表
opitmize table tabname;
--如果已经删除了表的一大部分, 或者对可变长度的行(varchar blob text)进行了过多修改 应该使用optimize命令,
--这个命令可以将表中的空间碎片进行合并,并且可以消除由于删除或者更新造成的空间浪费
--仅仅对 myisam bdb innodb 表起作用
optimize table payment;
--对于innodb引擎的表来说 如果设置了innodb-file_pre_table 参数的话,设置innodb为独立表的空间模式
--这样每个数据库中的每个表都会生成一个独立的ibd文件 用户存储表的数据和索引 一定程度上减轻innodb表的空间回收问题
--另外在大量删除后 innodb可以通过alter table但不修改引擎的方式 回收不利用的空间


--关键字
analyze(分析表)
check(检测)
optimize(优化表)
alter table (修改)
执行期间会造成表锁定, 所以要在数据库不忙的时候执行

tags: Mysql