MYSQL optimize
•
MySQL性能
optimize table 的作用
当您的库中删除了大量的数据后,您可能会发现数据文件尺寸并没有减小。这是因为删除操作后在数据文件中留下碎片所致。
提供了数据表优化的功能,可以去除删除操作后留下的数据文件碎片,减小文件尺寸,加快未来的读写操作。您只要在做完批量删除,或定期(如 每一两个月)进行一次数据表优化操作即可。
经过数据的反复写入和删除、修改,会有一些表空间不释放或者磁盘碎片存在,以及有报错提示,碎片一般经过optimize table操作会释放;您可通过升级磁盘,然后观察磁盘使用情况;升级等操作会触发迁移,也会进行数据库的重新导出、导入,释放磁盘的碎片,所以迁移后对应的磁盘占用空间显示变小,变小的部分即是对应长期使用导致的表的锁片。
OPTIMIZE TABLE只对MyISAM, BDB和InnoDB表起作用。
解决碎片率
您也可以通过如下命令,直接释放磁盘碎片空间。
optimize table table_name;
或
alter table table_name engine=innodb;
来整理空间碎片, 但这样操作会锁表, 还请您挑选业务低峰期或维护时间进行操作
显示各表的数据大小,索引大小,空间碎片大小
Select TABLE_SCHEMA,TABLE_NAME,DATA_LENGTH,INDEX_LENGTH,DATA_FREE
from information_schema.tables order by DATA_FREE desc;
统计数据大小,索引大小,空间碎片大小总和
select sum(DATA_LENGTH+INDEX_LENGTH+DATA_FREE)/1024/1024/1024 from information_schema.tables;