Mysql表空间碎片释放

作者: 雪飘千里 | 来源:发表于2019-08-16 16:52 被阅读0次

最近用户反馈,查询统计数据时,变慢了,看生产环境数据库,内容并不多,只有90多万条数据,而索引也都有建,那么为什么会变慢呢,通过查询后发现,这张表的碎片率达到了92%,如下

image.png
-- table_rows 表行数   zize 数据空间   data_free碎片攻

select table_name,table_rows,concat(round(DATA_LENGTH/1024/1024, 2), 'MB') as size,DATA_FREE 
from information_schema.`TABLES`   order by DATA_LENGTH desc ;

image.png

可以看着这张表的数据才占用463M,但是碎片却占用20G,这时候就需要回收表空间碎片。

目前打算在下次停机发布大版本时,释放这张表

产生原因

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

  • 记录被Delete,且原空间无法复用;

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

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

影响

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

  • 浪费磁盘空间;

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

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

回收表空间碎片的方法

回收碎片的常见方法是通过 optimize table tableName 命令释放表空间,重组表数据和索引的物理页,减少所占空间和优化读写性能,操作过程会导致该表上的写操作无法执行,实例负载增大,请用户谨慎操作,如果确定需要回收,建议放在业务低峰期进行。

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

相关文章

  • Mysql表空间碎片释放

    最近用户反馈,查询统计数据时,变慢了,看生产环境数据库,内容并不多,只有90多万条数据,而索引也都有建,那么为什么...

  • mysql表碎片清理和表空间收缩

    mysql表碎片清理和表空间收缩(即清理碎片后report_site_day.ibd文件磁盘空间减小,该方案基于独...

  • mysql 表空间收缩_MySQL 清除表空间碎片

    MySQL 清除表空间碎片的实例详解 碎片产生的原因 (1)表的存储会出现碎片化,每当删除了一行内容,该段空间就会...

  • MySQL 临时表

    临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间。 使用PHP脚本来创建MySQL临时表...

  • 数据存储遇到坑的总结

    mysql innodb的表要定期进行data_free的清理 优化表空间碎片 关闭query_cache 相关s...

  • MySQL中如何减低表的碎片

    查询表的碎片化 MySQL中如何减低表的碎片 在MySQL中,可以使用 这两种方法降低碎片,关于这两者的简单介绍如...

  • MySQL InnoDB表空间加密

    从 MySQL5.7.11开始,MySQL对InnoDB支持存储在单独表空间中的表的数据加密 。此功能为物理表空间...

  • MySQL表碎片整理

    甲方要求每个月整理一下MySQL的表碎片率,并汇报 查询表碎片sqlselect t.table_schema, ...

  • 技术分享 | MySQL 表空间碎片整理方法

    作者:姚远MySQL ACE,华为云 MVP ,专注于 Oracle、MySQL 数据库多年,Oracle 10G...

  • mysql表空间

    表空间是一种逻辑结构,它位于表和数据文件之间 1. System Tablespace SYSTEM表空间包含的...

网友评论

    本文标题:Mysql表空间碎片释放

    本文链接:https://www.haomeiwen.com/subject/btrqsctx.html