深入浅出 MySQL:SQL 优化 - 两个简单实用的优化方法

版权声明:@潘广宇博客, 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 执行期间会进行表锁,需要在数据库不繁忙时执行。

猜你喜欢

转载自blog.csdn.net/panguangyuu/article/details/89299165