Mysql数据快速清理及表空间释放

1、TABLES表主要字段说明:

MySQL的 information_schema 数据库中的TABLES 表记录了MySQL数据库中每个表占用的空间、表记录的行数,更新时间,说明等,这个表主要字段如下:

TABLE_SCHEMA : 数据库名

TABLE_NAME:表名

ENGINE:所使用的存储引擎

TABLES_ROWS:记录数,即表的行数

DATA_LENGTH:数据大小

INDEX_LENGTH:索引大小

CREATE_TIME:创建时间

UPDATE_TIME:最近更新时间

DATA_FREE:该参数与mysql碎片有关,如果是共享表空间,该字段表示共享表空间的大小而非数据的大小。只有使用独占表空间时,该字段才表示该表的剩余空间;

说明:当MySQL从列表中删除一行内容,该段空间就会被留空。在一段时间内执行大量删除操作后,往往会使碎片空间变得比存储列表内容所使用的空间更大。

通俗的讲:Data_free字段即为多占的物理空间,通过‘show table status’可以查看指定表的Data_free字段,对应的值就是多占用的物理空间,drop表重建或是重新导入可以释放这部分空间。

mysql> use hellodb

mysql> show table status like 'students%';

+-----------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+

| Name      | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time         | Update_time | Check_time | Collation       | Checksum | Create_options | Comment |

+-----------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+

| students  | InnoDB |      10 | Compact    |   27 |            606 |       16384 |               0 |        32768 |         0 |             28 | 2017-11-28 15:31:15 | NULL        | NULL       | utf8_general_ci |     NULL |                |         |

| students1 | InnoDB |      10 | Compact    |    8 |           2048 |       16384 |               0 |        32768 |         0 |              9 | 2018-06-11 20:16:53 | NULL        | NULL       | utf8_general_ci |     NULL |                |         |

+-----------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+-----------------

此时可以使用optimize整理表的碎片:

注意:该操作执行的时候会把该表格先写入一个tmp临时表,所以磁盘剩余空间必须大于表空间,否则会执行失败。

mysql> optimize table classes,students;

5.6.X以前的版本会提示该表不支持optimize,5.6.X的版本已经支持Innodb了。

2、生产案例:释放表空间

思路1

数据不删除:备份表,drop表,导入备份的表到数据库;

show table status like 'oldtb%';  -->重点关注Data_free字段,对应的值就是多占用的物理空间,即碎片空间

mysqldump -uroot -p123456  mydb oldtb >/mnt/oldtb.sql  -->导出可以恢复系统空间的表格。

drop table oldtb;                        -->drop旧表释放表空间

source /mnt/oldtb.sql;                -->导出备份的表到数据库。

show table status like 'oldtb%';  -->对比恢复前后的状态,重点关注Data_free字段

该操作通过多次单表操作,多次对表进行备份和恢复,从而释放了碎片空间,适用于不允许停机的业务。

如果系统业务允许在一段时间内停止服务,可以备份整个数据库,然后清空,重建mysql数据根目录,然后恢复整个数据库。

思路2

删除部分旧数据:适用于可以删除部分旧数据的场景

create table newtb like oldtb if no exist;      -->新建newtb表,表结构同旧表

insert into newtb select * from oldtb where time > 'xxx' and time<='xxx';

-->备份表的新数据,可以按时间段备份最近一个月或半个月

drop table oldtb;                                        -->drop旧表释放表空间

alter tables newtb rename to oldtb;           -->重命名新表“newdtb”

思路3:直接优化表:optimize table 表名;

select table_name,data_free,engine from information_schema.tables where table_schema='mydb';

-->查看库中各表data_free值,单位是字节,data_free/1024/1024/1024即为理论上释放后可以恢复空间G。

show table status like 'oldtb';                  -->单个表的data_free大小

mysql> OPTIMIZE TABLE  hellodb.students;

-->显示不支持,实际上已进行重建和分析,空间已经回收

+------------------+----------+----------+-------------------------------------------------------------------+

| Table            | Op       | Msg_type | Msg_text                                                          |

+------------------+----------+----------+-------------------------------------------------------------------+

| hellodb.students | optimize | note     | Table does not support optimize, doing recreate + analyze instead |

| hellodb.students | optimize | status   | OK                                                                |

+------------------+----------+----------+-------------------------------------------------------------------+

2 rows in set (0.08 sec)

Mysql在生产环境中快速清理数据及表空间释放相关推荐

  1. java生产问题快速定位_生产环境如何快速跟踪、分析、定位问题-Java

    我相信做技术的都会遇到过这样的问题,生产环境服务遇到宕机的情况下如何去分析问题?比如说JVM内存爆掉.CPU持续高位运行.线程被夯住或线程deadlocks,面对这样的问题,如何在生产环境第一时间跟踪 ...

  2. Sentinel(十五)之在生产环境中使用 Sentinel

    转载自  在生产环境中使用 Sentinel 引言 Sentinel 目前已可用于生产环境,除了阿里巴巴以外,也有很多企业在生产环境中广泛使用 Sentinel. 生产环境的 Sentinel Das ...

  3. Dubbo Mesh 在闲鱼生产环境中的落地实践

    本文作者至简曾在 2018 QCon 上海站以<Service Mesh 的本质.价值和应用探索>为题做了一次分享,其中谈到了 Dubbo Mesh 的整体发展思路是"借力开源. ...

  4. 一文教你如何在生产环境中在Kubernetes上部署Jaeger

    作者 |  Dotan Horovit 翻译 | 火火酱~ 责编 | 晋兆雨 出品 | CSDN云计算 日志.指标和跟踪是"可观察性"领域的三大支柱.最近几个月,随着OpenTel ...

  5. 写一段代码提高内存占用_记录一次生产环境中Redis内存增长异常排查全流程!...

    点击上方 IT牧场 ,选择 置顶或者星标 技术干货每日送达 最近 DBA 反馈线上的一个 Redis 资源已经超过了预先设计时的容量,并且已经进行了两次扩容,内存增长还在持续中,希望业务方排查一下容量 ...

  6. 云端设计平台Coohom在生产环境中使用istio的经验与实践

    介绍 自从istio-1.0.0在今年发布了正式版以后,Coohom项目在生产环境中也开启了使用istio来作为服务网格. 本文将会介绍与分享在Coohom项目在使用istio中的一些实践与经验. C ...

  7. 记录一次生产环境中Redis内存增长异常排查全流程!

    作者:z小赵 ★ 一枚用心坚持写原创的"无趣"程序猿,在自身受益的同时也让朋友们在技术上有所提升. 最近 DBA 反馈线上的一个 Redis 资源已经超过了预先设计时的容量,并且已 ...

  8. svn 服务器在生产环境中的搭建

    svn 服务器在生产环境中的搭建 搭建环境 阿里云服务器  CentOS release 6.7 安装软件 yum install subversion  -y 创建项目目录 cd /home/svn ...

  9. 在生产环境中调试 Angular 应用程序而不显示源映射

    当我们的 Angular 应用程序部署到生产环境时,我们经常会遇到与我们在开发过程中编辑的不同的代码.我们的代码在构建过程中会以各种方式进行修改和优化. TypeScript 被 transpiled ...

最新文章

  1. LeetCode简单题之整理字符串
  2. 【设计干货】Facebook设计APP时的14个必考题
  3. 卸料装置弹性零件的计算方法_冲裁模卸料板的设计
  4. P1038 神经网络(拓扑排序)
  5. python 更改输出的颜色_python 输出指定的颜色
  6. 使用idea编写消费者,接收生产者的持续日志输出【小案例】(三)
  7. 大话设计模式之设计模式遵循的七大原则
  8. python twisted教程_Python Twisted系列教程1:Twisted理论基础
  9. (转) 基于Arcgis for Js的web GIS数据在线采集简介
  10. DE 32: Limit Cycles
  11. 动手学习深度学习的PDF电子版
  12. 联想Y450电源管理无法调节屏幕亮度的解决办法
  13. 爬虫案例1:js逆向获取极简壁纸的高清壁纸
  14. html scr 拼接,浅谈html中scr与href是什么?scr与href有什么区别?
  15. 网络1711班 C语言第一次作业批改总结
  16. 关于dpi、dp与sp的基础了解
  17. #遗憾#重重的挫败感再次袭来!!!
  18. r语言的MASS包干什么的_R语言常用包汇总
  19. **Windows10下最便捷的屏幕录制方法**
  20. 视频的码率、帧率、分辨率之间的区别

热门文章

  1. ES6中的Map和Set详解
  2. 苹果cms视频文字采集插件
  3. 菜鸟关于spring事务配置说明
  4. 合同中的不可抗力、延期和仲裁条款
  5. c语言笔记(翁恺3.2.1...if~3.3.1)
  6. 计算机毕设项目之农产品销售及管理系统
  7. SOHO如何操作信用证订单?
  8. 最新的目标检测的深度架构 | 参数少一半、速度快3倍+(文末福利)
  9. SteadyFlow: Spatially Smooth Optical Flow for Video Stabilization
  10. python撤回快捷键大全_PythonIDEPyCharm的快捷键大全