客户无忧-测cpu温度软件

整理磁盘碎片
2023年3月31日发(作者:ipad pro什么时候出)

Mysql磁盘碎⽚整理教程

简介

本⽂来讲解下Mysql磁盘碎⽚的整理,为什么数据库会产⽣碎⽚,以及如何清理磁盘碎⽚,还有⼀些清理磁盘碎⽚的注意事项。

⼀.为什么Mysql会产⽣磁盘碎⽚

1.存储数据会产⽣碎⽚

写⼊数据时,Mysql会尝试使⽤空⽩空间,但如果⼀个空间⼀直没有与之⼤⼩相匹配的数据占⽤时,这段磁盘空间就形成了⼀个磁盘碎⽚。

2.删除数据会产⽣碎⽚

当删除⼀⾏数据时,该⾏数据所占有的磁盘空间会被留空,如果⼤批量删除数据,就会产⽣⼤量的留空磁盘空间,最后磁盘留空的空间可能

会超过正在存储数据所⽤的空间。

⼆.为什么要清理Mysql的磁盘空间

释放表空间可以提⾼Mysql的I/O性能,也可以降低磁盘空间使⽤率。

三.如何判断磁盘是否需要清理碎⽚

通过执⾏以下SQL,查看data_free的⼤⼩,如果太⼤建议清理。

SELECT

CONCAT(TRUNCATE(SUM(data_length)/1024/1024,2),'MB')ASdata_size,

CONCAT(TRUNCATE(SUM(max_data_length)/1024/1024,2),'MB')ASmax_data_size,

CONCAT(TRUNCATE(SUM(data_free)/1024/1024,2),'MB')ASdata_free,

CONCAT(TRUNCATE(SUM(index_length)/1024/1024,2),'MB')ASindex_size

FROM

information_

WHERE

--只需要将'tableName'修改为你要查看的表名

TABLE_NAME='tableName';

(图:查看数据库某个表磁盘碎⽚空间)

补充:查询⼀个表的全部状态

--将DBName替换为你的数据库名,将tableName替换为你要查询的表名

showtablestatusfromDBNamewhereName=tableName

四.如何优化磁盘空间

1.优化前必看注意事项

①.优化表空间时,会造成锁表

数据量越⼤的表,优化耗时越长,百万条数据⼤约耗时30s(约25000-30000⾏/秒,此数据根据机器磁盘性能会有差异)。所以,在磁盘优

化时,所有的增删操作将受限,请选择⼀个业务空档期执⾏。

②.间隔多久需要优化⼀次磁盘碎⽚?

Mysql官⽅不建议频繁进⾏碎⽚整理,⽐如每天都整理磁盘。可观测⼀次优化后,能撑多久才会产⽣⽐较⼤的碎⽚⽂件,然后根据这个周

期,定制⼀个定期优化碎⽚的任务。

如:每周或每⽉凌晨3点定时清理碎⽚。

2.如何优化磁盘空间

判断你的数据表的引擎是什么

①.如果引擎是MyISAM,则可以通过下⾯SQL优化。

--优化表空间

optimizetabletableName;

注:如果引擎是InnoDB,执⾏此SQL会提⽰:Tabledoesnotsupportoptimize,doingrecreate+analyzeinstead

②.如果引擎是InnoDB,通过下列SQL可以代替optimizetablexxx

--将表改为InnoDB数据库引擎

ALTERTABLEtableNameENGINE=InnoDB;

--分析表,查看表状态

ANALYZETABLEtableName;

即通过重新将数据库引擎设置为InnoDB的⽅式,来优化磁盘空间。

总结

本⽂介绍了Mysql的磁盘优化及注意事项、磁盘碎⽚形成的原因、不同的数据库引擎采⽤不同的优化⽅案,喜欢本⽂,请收藏和点赞。

更多推荐

整理磁盘碎片