版权声明:@潘广宇博客, https://blog.csdn.net/panguangyuu/article/details/89299165
一、定期分析表和检查表
分析表:修复索引
analyze table xxx; -- 只对MyISAM Innodb BDB有效
-- 修复索引,某些时候当某列索引范围小于该列实际范围值时,索引可能会失效。
-- 搭配使用
show index from xxx; -- 查看当前表的索引情况,cardinality (索引对应的列的散列程度)
analyze table xxx;
show index from xxx; -- 查看修复后散列程度是否有提高
检查表:定期检查表是否存在错误
check table xxx; -- 只对MyISAM Innodb有效
二、定期优化表
optimize table xxx; -- 只对MyISAM Innodb BDB有效
如果删除表的一大部分、或对包含可变长度列(varchar text 等)的表进行了很多更改,使用该语句将表中的空间碎片进行合并,减少空间浪费。
Innodb:
1)通过设置 innodb_file_per_table,为每个表生成独立的 ibd 文件存储数据和索引,减轻 innodb 表的空间回收问题。
2)删除大量数据后 通过 alter table 语句但不改变引擎的方式回收不用的空间。
alter table xxx engine = innodb;
三、使用注意
analyze、check、optimize、alter table 执行期间会进行表锁,需要在数据库不繁忙时执行。