首页 > 数据库 >Mysql 碎片优化,ibd文件过大优化

Mysql 碎片优化,ibd文件过大优化

时间:2022-10-03 09:55:26浏览次数:55  
标签:数据 ibd 碎片 索引 InnoDB Mysql 优化

一、ibd文件

    我们知道ibd文件是每个数据库里面每个表的数据空间,每个表的数据和索引都会存在自已表空间中。然后建库建表,插入数据,使该表的ibd文件增大

  在使用mysql的时候有时候,可能会发现尽管一张表删除了许多数据,但是这张表表的数据文件和索引文件却奇怪的没有变小。这是因为mysql在删除数据(特别是有Text和BLOB)的时候,会留下许多的数据空洞/碎片,这些空洞会占据原来数据的空间,所以文件的大小没有改变。这些空洞在以后插入数据的时候可能会被再度利用起来,当然也有可能一直存在。这种空洞不仅额外增加了存储代价,同时也因为数据碎片化降低了表的扫描效率。

二、查询表的情况

show table status like 'user' \G 

   \G 的作用:是将查到的结构旋转90度变成纵向

  Name 表名

      Engine    表的存储引擎,在旧版本中,该列的名字叫做 Type,而不是 Engine。

 Version 表的 .frm 文件的版本号。

   Row_format   行的格式。对于 MyISAM 表,可选的值为 Dynamic、Fixed 或者 Compressed。

   Dynamic 的行长度是可变的,一般包含可变长度的字段,如 VARCHAR 或者 BLOB。

    Fixed 的行长度则是固定的,值包含固定长度的列,如 CHAR 和 INTEGER。

   Compressed 的行则只在压缩表中存在,压缩表是不能够修改的(除非先将表解除压缩,修改数据,然后再次压缩),压缩表可以极大的减少磁盘空间占用,一次也可以减         少磁盘 I/O,从而提升查询性能。压缩表也支持索引,但索引也是只读的。

   Rows    表中的行数。对于 MyISAM 和其他的一些存储引擎,该值是精确的,但对于 InnoDB,该值是估计值。

 Avg_row_length     平均每行包含的字节数。

   Data_length    表数据的大小(以字节为单位)。

    Max_data_length  表数据的最大容量,该值和存储引擎有关。

   Index_length   索引的大小(以字节为单位)。

   Data_free    对于 MyISAM 表,表示已分配但目前没有使用的空间。这部分空间包括了之前删除的行,一级后续可以被 insert 利用到的空间。

   Auto_increment  下一个 auto_increment 的值。

  Create_time   表的创建时间。

  Update_time   表数据的最后修改时间。

  Check_time   使用 check table 命令货值 myisamchk 工具最后一次检查表的时间。

  Collation   默认字符集和字符列排序规则。

  Checksum  如果启用,保存的是整个表的实时校验和。

  Create_options   创建表指定的其他选项。

   Comment    该列包含了一些其他的额外信息。对于 MyISAM 表,保存的是表在创建时带的注释。对于 InnoDB 表,则保存的是 InnoDB 表空间的剩余空间信息。如果是一个视图,则该列包含 “VIEW” 的文本字样。

三、优化方式

   非InnoDB表优化:  OPTIMIZE TABLE ds_log_detail;
       优化整理碎片,会锁表操作,建议要避开业务时间操作。

   MySQL 5.7之后的innodb表推荐使用ALTER TABLE ds_log_detail ENGINE=InnoDB;来对表空间碎片进行优化。

   优化以后会释放所有碎片和索引

 

标签:数据,ibd,碎片,索引,InnoDB,Mysql,优化
From: https://www.cnblogs.com/topguntopgun/p/16750046.html

相关文章

  • 怎样对react,hooks进行性能优化?
    前言现在越来越多人开始使用ReactHooks+函数组件的方式构筑页面。函数组件简洁且优雅,通过Hooks可以让函数组件拥有内部的状态和副作用(生命周期),弥补了函数组件的不足......
  • 11-Elasticsearch-logstash数据同步[Mysql->Logstash->Es]
    logstash数据同步简介集中,转换和存储数据,logstach是免费且开放的服务器端数据处理管道,能够从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的"存储库"中......
  • day03-MySQL基础知识02
    MySQL基础知识024.CRUD数据库CRUD语句:增(create)、删(delete)、改(update)、查(Retrieve)Insert语句(添加数据)Update语句(更新数据)Delete语句(删除数据)Select语句......
  • 2022-09-30 mysql列存储引擎-去除TempTableForSubquery引发的memcopy的策略
    摘要:在做子查询时, TempTableForSubquery引发大量的memcpy。本文记录消除memcpy的优化的策略。逻辑追踪:火焰图: memcpy追踪:(gdb)bt#0stonedb::core::Filter::Block:......
  • 斜率优化
    斜率优化是将一类\(O(n^2)\)的DP状态转移优化至\(O(n\logn)\)甚至\(O(n)\)的方法。用一个atcoderdpcontest的最后一题来讲解:dp_zFrog-3https://atcoder.......
  • mysql绿色版在windows系统中的启动
      1、下载mysql免安装版例如:mysql-5.7.11-winx642、修改配置文件,my-default.ini名称改为:my.ini,文件里面的参数配置:[mysqld]#skip-grant-tables#Thesearecommo......
  • MySQL windows 安装:
    1.下载一个windows版本的软件:2.3.选择典型:4接着弹出框:5选择第一个:6.选择服务器模式:7.支持多数据:然后一路Next:字符集合选择utf-8:8.设置密码:9.选择Execute:出现问题参考:​​......
  • Mysql function 自定义函数,查找子节点
    ThisfunctionhasnoneofDETERMINISTIC,NOSQL,orREADSSQLDATAinitsdeclarationandbinaryloggingisenabled(you*might*wanttousethelesssafelog_......
  • Spring整合Mybatis连接MySQL数据库配置 异常 情景再现
    Spring整合Mybatis连接MySQL数据库配置情景再现注意点一:数据库Table表字段和Entity实体类属性名不匹配解决:方法一:开启下划线转大驼峰命名mybatis:configurati......
  • Android开发性能优化耗时卡顿检测方法以及步骤
    方法一:使用AndroidSDK工具下的systrace.py脚本获取跟踪记录参考:​​https://developer.android.com/topic/performance/tracing/command-line​​run_systrace.py是Android......