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

产生原因

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

  1. 记录被Delete,且原空间无法复用;
  2. 记录被Update(通常出现在变长字段中),原空间无法复用;
  3. 记录插入导致页分裂,页的填充率降低;

影响

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

  1. 浪费磁盘空间;
  2. 可能导致查询扫描的IO成本提升,效率降低;

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

回收表空间碎片的方法

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

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

常用命令

查看某个表的碎片大小

SHOW TABLE STATUS LIKE '表名';
碎片大小MB =DATA_FREE / 1024 / 1024

清理碎片

ALTER TABLE 表名 engine = InnoDB

执行流程

  • 建立一个临时文件,扫描表 A 主键的所有数据页;
  • 用数据页中表 A 的记录生成 B+ 树,存储到临时文件中;
  • 生成临时文件的过程中,将所有对 A 的操作记录在一个日志文件(row log)中,对应的是图中 state2 的状态;
  • 临时文件生成后,将日志文件中的操作应用到临时文件,得到一个逻辑数据上与表 A 相同的数据文件,对应的就是图中 state3
    的状态;用临时文件替换表 A 的数据文件。

测试参考:8G数据约2500万条数据,整理用时35秒,执行速度与服务器配置和数据量大小有关。

设置更新间隔

SET session information_schema_stats_expiry=0;
SET @@session.information_schema_stats_expiry=0;

查看设置

SHOW session VARIABLES LIKE 'information_schema_stats_expiry';

MySQL 表空间碎片相关推荐

  1. MySQL表空间碎片整理

    MySQL可以使用alter table tn engine=innodb语句进行表空间碎片整理.而页内记录并不是物理有序的,并且删除记录后,被删除的记录放到页内free链表,可能会产生很多空洞.al ...

  2. 清除mysql数据碎片_MySQL 清除表空间碎片方法总结

    mysql数据库会生成空间碎片了,这些空间碎片对于我们来讲影响不大但如果空间碎片多了会导致mysql查询缓存了,下面一起来看MySQL 清除表空间碎片方法吧,具体的如下所示. 碎片产生的原因 (1)表 ...

  3. MySQL表空间简介

    本文主要介绍一下MySQL中的几种表空间概念及相关操作. 基础材料: CentOS7.5  MySQL 5.7.24 ######################################### ...

  4. mysql 表空间监控shell_一种通过zabbix监控mysql表空间的方法

    一种通过zabbix监控mysql表空间的方法[ 技术领域: ][0001]本发明涉及计算机自动化运维与监控领域,具体地说是一种通过ZABBIX监控MYSQL表空间的方法.[ 背景技术: ][0002 ...

  5. oracle 表空间 碎片,Oracle表空间碎片整理

    作为影响数据库性能的一个因素,数据库表空间碎片,应当引起DBA的重视,及时发现并整理碎片是DBA基本维护内容,以提高数据库性能. Oracle数据库表空间.段.区.块简述 表空间(tablesapce ...

  6. Oracle表空间碎片查询以及整理

    一.查看表空间碎片的方法 查看fsfi值 /* Formatted on 2017/9/21 13:42:29 (QP5 v5.240.12305.39476) */ select a.tablesp ...

  7. mysql 表空间收缩_mysql表碎片清理和表空间收缩

    mysql表碎片清理和表空间收缩(即清理碎片后report_site_day.ibd文件磁盘空间减小,该方案基于独立表空间存储方式) OPTIMIZETABLE [tablename],当然这种方式只 ...

  8. mysql怎么把值更新成space,MySQL表的碎片整理和空间回收小结

    MySQL表碎片化(Table Fragmentation)的原因 关于MySQL中表碎片化(Table Fragmentation)产生的原因,简单总结一下,MySQL Engine不同,碎片化的原 ...

  9. mysql清除表空间导入_MySQL 清除表空间碎片

    碎片产生的原因 (1)表的存储会出现碎片化,每当删除了一行内容,该段空间就会变为空白.被留空,而在一段时间内的大量删除操作,会使这种留空的空间变得比存储列表内容所使用的空间更大; (2)当执行插入操作 ...

  10. mysql表空间过大_详解MySQL表空间以及ibdata1文件过大问题

    ibdata1文件过大 原因分析 ibdata1是一个用来构建innodb系统表空间的文件,关于系统表空间详细介绍参考MySQL官网文档 上面是一个数据库的ibdata1文件,达到了780多G,而且还 ...

最新文章

  1. [UWP小白日记-10]程序启动屏(ios解锁既视感)
  2. 中国人长期“霸榜”GitHub,国外开发者发文控诉
  3. 逍遥模拟器配置burpsuite抓包环境
  4. Vue.js 条件与循环
  5. 用汇编的眼光看C++(之类继承)
  6. iphone9发布_苹果将发布iPhone9!配置升级价格公道,期待官网亮相!
  7. Selenium自动化测试-文件上传
  8. Qt多线程-QThread
  9. SDWebImage 笔记
  10. Android 解决调用系统相册打不开图片 DecodeServices报解码错误
  11. karto探秘之open_karto 第一章 --- 数据结构与类的初始化
  12. 【PPT】PPT倒计时动画的制作方法 5.4.3.2.1...
  13. swagger2搭配knife4j 隐藏实体类的属性/字段
  14. 怎么理解Web 3.0?
  15. (二)浅谈OpenStack T版服务组件--Keyston身份服务(#^.^#)
  16. 个人登录空间 含登录注册功能
  17. 反思盛大转型之困:陈天桥的所有设想都被腾讯小米实现了
  18. ajax实现省市三级联动
  19. 打造数字时代的“诺亚方舟”
  20. 什么是CS和BS结构,两种结构的区别

热门文章

  1. Gossip 协议详解
  2. Ps光速制作文字矢量图
  3. 计算机软件著作权的软件全称,软件著作权名称要求是什么
  4. Excel如何查找重复内容
  5. LED恒流驱动IC汇总
  6. Ubuntu安装Google Chrome浏览器
  7. GFLOPS和GMACS概念
  8. 游戏加速器安卓apk代码
  9. [数学] 一般正态曲线函数的积分怎么求?为什么总是1?
  10. 定量数据和定性数据_定性数据:赋予大数据意义的上下文