乐趣区

关于数据库:MySql-表空间碎片整理

什么是表空间碎片

表空间中,占据内存空间,但没有用于存储数据的碎片空间

如何查看 & 判断

show table status from db_name;

产生起因

  • 数据被 delete,且原空间无奈复用
  • 数据被 update,常见于变长的字段中,原空间无奈复用
  • 数据插入,导致页决裂,页填充率升高

产生影响

  • 节约磁盘空间
  • 查问 IO 成本上升,效率低
  • 如果表数据量不大,则无需关注,不倡议清理

如何清理

alter table table_name engine = innodb;
视具体表存储引擎决定

  • 该命令会重建整个表,分明碎片空间
  • 重建整顿聚簇索引上的数据

须要留神

尽管 MySql 5.6 反对了 Online DDL,然而也会有降级写锁的工夫,如果该表数据量过大或是业务高频读写,仍然会引起问题,倡议在低频业务时段解决,或者用其余代替计划

退出移动版