Mysql磁盘碎⽚整理教程
简介
本⽂来讲解下Mysql磁盘碎⽚的整理,为什么数据库会产⽣碎⽚,以及如何清理磁盘碎⽚,还有⼀些清理磁盘碎⽚的注意事项。
⼀.为什么Mysql会产⽣磁盘碎⽚
1.存储数据会产⽣碎⽚
写⼊数据时,Mysql会尝试使⽤空⽩空间,但如果⼀个空间⼀直没有与之⼤⼩相匹配的数据占⽤时,这段磁盘空间就形成了⼀个磁盘碎⽚。
2.删除数据会产⽣碎⽚
当删除⼀⾏数据时,该⾏数据所占有的磁盘空间会被留空,如果⼤批量删除数据,就会产⽣⼤量的留空磁盘空间,最后磁盘留空的空间可能会超过正在存储数据所⽤的空间。
⼆.为什么要清理Mysql的磁盘空间
释放表空间可以提⾼Mysql的I/O性能,也可以降低磁盘空间使⽤率。
三.如何判断磁盘是否需要清理碎⽚
通过执⾏以下SQL,查看data_free的⼤⼩,如果太⼤建议清理。
SELECT
CONCAT(TRUNCATE(SUM( data_length )/1024/1024,2),'MB')AS data_size,
CONCAT(TRUNCATE(SUM( max_data_length )/1024/1024,2),'MB')AS max_data_size,
CONCAT(TRUNCATE(SUM( data_free )/1024/1024,2),'MB')AS data_free,
CONCAT(TRUNCATE(SUM( index_length )/1024/1024,2),'MB')AS index_size
FROM
information_schema.TABLES
WHERE
-
-  只需要将'tableName'修改为你要查看的表名
TABLE_NAME ='tableName';
(图:查看数据库某个表磁盘碎⽚空间)
补充:查询⼀个表的全部状态
-- 将DBName替换为你的数据库名,将tableName替换为你要查询的表名
show table status from DBName  where Name = tableName
四.如何优化磁盘空间
1.优化前必看注意事项
①.优化表空间时,会造成锁表
数据量越⼤的表,优化耗时越长,百万条数据⼤约耗时30s(约25000-30000⾏/秒,此数据根据机器磁盘性能会有差异)。所以,在磁盘优化时,所有的增删操作将受限,请选择⼀个业务空档期执⾏。
②.间隔多久需要优化⼀次磁盘碎⽚?
Mysql官⽅不建议频繁进⾏碎⽚整理,⽐如每天都整理磁盘。可观测⼀次优化后,能撑多久才会产⽣⽐较⼤的碎⽚⽂件,然后根据这个周期,定制⼀个定期优化碎⽚的任务。
如:每周或每⽉凌晨3点定时清理碎⽚。
2.如何优化磁盘空间
判断你的数据表的引擎是什么
①.如果引擎是MyISAM,则可以通过下⾯SQL优化。
-- 优化表空间
optimize table tableName;
注:如果引擎是InnoDB,执⾏此SQL会提⽰:Table does not support optimize, doing recreate + analyze instead
mysql下载哪个盘②.如果引擎是InnoDB,通过下列SQL可以代替optimize table xxx
-- 将表改为InnoDB数据库引擎
ALTER TABLE tableName ENGINE=InnoDB;
-- 分析表,查看表状态
ANALYZE TABLE tableName;
即通过重新将数据库引擎设置为InnoDB的⽅式,来优化磁盘空间。
总结
本⽂介绍了Mysql的磁盘优化及注意事项、磁盘碎⽚形成的原因、不同的数据库引擎采⽤不同的优化⽅案,喜欢本⽂,请收藏和点赞。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。