• RDS for MySQL 删除数据后空间没有减少处理方法


    公司的程序和数据库部署在阿里云上,数据库使用的是阿里云的RDS,这天,经理在开发群中发了一个信息:

    您的RDS实例rm********0oq的磁盘在过去一周平均使用率已超过80.0%,建议您对实例规格进行升级,以免磁盘资源不足,影响业务运行。详情请您查看您阿里云注册邮箱中的邮件。

    1、首先我在Navicat上远程delete阿里云RDS数据表中的数据,

    找到对应的表,然后delete 删除部分数据,单个表中的数据达五千万条,所以操作起来很笨重。(懊恼啊,为什么当初没有做分表操作。。)

    按照产品经理的原话是“近期的任务不要删除,把以前的数据删掉!”

    so,切割表的想法就打消了。还好我们的id是自增的,根据id删除了前面的数据。(每次也就几十万)

    在复杂一些的就是根据任务字段删除数据。

    删了一个小时,MD累死了,才删了几百万条数据,这时候我看了一下RDS的磁盘空间。

    !!!!!!!!!!!!!!

    MD,我奔溃啊,磁盘空间快满了,什么鬼啊!

    吓得我赶紧喝了口82年的拉菲。

    我打开百度(全球最大的中文搜索引擎),搜了一下本文的题目“MySQL 删除数据后空间没有减少处理方法”,给出了方法:

    https://help.aliyun.com/knowledge_detail/41720.html

    我就迅速的登上了DMS,找到了表维护--》优化。然后开始庆幸,幸好及时发现,不然就满了。。满了。满了!真的是满了。。。。。。。在我优化的时候我看了一下实例状态:

    你TM在逗我?

    越优化越满了?什么情况啊。。。。。。。。。

    再次打开了全球最大的中文搜索引擎。

    给出下面的解决方案,使用命令行:

    OPTIMIZE TABLE mission_picture
    

     这个命令执行时间比较长,可能是数据量较大的原因:但是结果并不理想,

    执行结果失败 
    note:Table does not support optimize, doing recreate + analyze instead 
    error:The table 'mission_picture' is full status:Operation failed

    查询资料,解决方案有下面几个:

    1、mysql本身的机制,delete后空间不会自动回收的,需要用optimize table回收。

    2、alter table 表 ENGINE = 'InnoDB';

         analyze table 表;

    最后解决方法是:

     在DMS中的sql执行第一个方法。执行结束,依然提示“Table does not support optimize, doing recreate + analyze instead”

    但是碎片率已经释放了。

    算是完成了。。

  • 相关阅读:
    【知识整理】这可能是最好的性能优化教程(一)
    【工作感悟】Android 开发者,如何提升自己的职场竞争力?
    MySql 主从复制
    MyCat 介绍、分片规则、调优的内容收集
    MyCat 安装部署,实现数据库分片存储
    [转]Activemq管理和基本介绍
    [转]ActiveMQ 即时通讯服务 浅析
    Redis 3.0集群 Window搭建方案
    【转】史上最全的“大数据”学习资源整理
    【转】【漫画解读】HDFS存储原理
  • 原文地址:https://www.cnblogs.com/zjiacun/p/8515909.html
Copyright © 2020-2023  润新知