mysql碎片

背景信息

本文描述的表空间碎片,指的是MySQL InnoDB引擎的表空间碎片;

产生原因

表空间碎片产生的常见原因:

(1)记录被Delete,且原空间无法复用;

(2)记录被Update(通常出现在变长字段中),原空间无法复用;

(3)记录插入导致页分裂,页的填充率降低;

影响

如果表空间碎片较大,可能带来的负面影响:

(1)浪费磁盘空间;

(2)可能导致查询扫描的IO成本提升,效率降低;

如果表空间较小或者碎片率较小,用户无需关注,也不建议执行回收空间碎片操作。

回收表空间碎片的方法

回收碎片的常见方法是通过 optimize table 来重组文件,操作过程会导致该表上的写操作无法执行,实例负载增大,请用户谨慎操作,如果确定需要回收,建议放在业务低峰期进行。

Alter Table操作也可以达到回收空间碎片的效果,请用户谨慎操作,如果确定需要回收,建议放在业务低峰期进行。

 

https://www.cnblogs.com/YasinXiao/p/7736400.html

 

 

OPTIMIZE TABLE reorganizes the physical storage of table data and associated index data, to reduce storage space and improve I/O efficiency when accessing the table. 

好处除了减少表数据与表索引的物理空间,还能降低访问表时的IO,这个比较理解,整理之前,取数据需要跨越很多碎片空间,这时需要时间的,整理后,想要的数据都放在一起了,直接拿就拿到了,效率提高

 

https://www.likecs.com/default/index/show?id=96814

 

清除表碎片

 

(1)MyISAM表

optimize table 表名

(2)InnoDB表

alter table 表名 engine=InnoDB

 

mysql碎片

上一篇:Last_SQL_Errno: 1032


下一篇:SQL中Statement和PreparedStatement