mysql delete无法释放空间用分区代替

随着数据库数据量的变大,如果要清除某个月的数据,用delete命令删除,mysql不会释放空间,必须整理碎片或者用修改引擎来重建表,才会释放空间,但是由于数据量很大,每次重建都得10-12小时的时间,太长了,想到了用mysql分区来解决这种弊病,通过删除分区,可以直接删除数据文件,那当然也可以释放空间。

分区的相关知识我就先不讲了,就说两点

  1. 分区字段不要有空值,因为空值会默认到无用分区中,这样查询会多扫描分区。
  2. 查询条件最好要带着分区字段,不然性能会很低,需要在所有分区里扫一遍。

添加分区脚本

ENGINE=InnoDB PARTITION BY RANGE COLUMNS(date)(

PARTITION p201410 VALUES less than (20141031),

PARTITION p201411 VALUES less than (20141131),

PARTITION p201412 VALUES less than (20141231),

PARTITION p201501 VALUES less than (20150131),

...........................

PARTITION pcatchall VALUES LESS THAN MAXVALUE

);

删除分区

ALTER TABLE 表 DROP PARTITION p201010;

合并分区

ALTER TABLE b   REORGANIZE PARTITION  p1,p2 into  (p12);

拆分分区

ALTER TABLE b   REORGANIZE PARTITION  p1,p2 into  (p12);

现在来说分区的拆分和合并暂时用不上,先写写吧

时间: 2024-07-28 12:21:42

mysql delete无法释放空间用分区代替的相关文章

MySQL ibdata1占用空间大 释放MySQL ibdata1文件的空间

MySQL ibdata1占用空间大  释放MySQL ibdata1文件的空间 背景:最近公司一台服务器报警,磁盘空间报警超阀值.  原来mysql数据库数据目录特别大,前一篇文章中介绍的是变更mysql数据文件的目录,此文主要介绍如何把mysql占用的空间释放出来. 说明: mysql有多种存储引擎,比如MyISAM.InnoDB很常用. 如果用的InnoDB, 且使用mysql默认的配置文件,MySQL的数据都会存放在ibdata1文件中,经过一段时间此文件会变的非常大,占用大量磁盘空间.

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

公司的程序和数据库部署在阿里云上,数据库使用的是阿里云的RDS,这天,经理在开发群中发了一个信息: 您的RDS实例rm********0oq的磁盘在过去一周平均使用率已超过80.0%,建议您对实例规格进行升级,以免磁盘资源不足,影响业务运行.详情请您查看您阿里云注册邮箱中的邮件. 1.首先我在Navicat上远程delete阿里云RDS数据表中的数据, 找到对应的表,然后delete 删除部分数据,单个表中的数据达五千万条,所以操作起来很笨重.(懊恼啊,为什么当初没有做分表操作..) 按照产品经

Centos 系统文件删除后没有释放空间

今天发现一台服务器的/Home 目录下空间满了,Naigos有报警,于是要清空无用的文件,当我删除文件后,发现可用空间没有变化 os:centos5.5 发现当前磁盘空间使用情况: [[email protected] ~]# df -hFilesystem            Size  Used Avail Use% Mounted on/dev/sda1             981M  203M  729M  22% /none                   16G     0

linux 磁盘删除文件后无法释放空间

预上线环境测试人员发现磁盘空间沾满,于是使用df -h 和 du -sh * 找到了大文件,并删除. 但并未释放空间,df -h 还是显示占用率为100%,此时du -sh * 显示占用只有7G,与df -h 查看到的内容不符. 在Linux或者Unix系统中,通过rm或者文件管理器删除文件将会从文件系统的目录结构上解除链接.然而如果文件是被程序占用的,则无法真正的清理磁盘空间,文件还是物理存在的. 此时使用lsof | grep deleted 查看 [[email protected] /]

MySQL DELETE语句和TRUNCATE TABLE语句的区别

MySQL DELETE语句和TRUNCATE TABLE语句的区别 2010-10-08 16:05 佚名 互联网 字号:T | T 在MySQL数据库中,DELETE语句和TRUNCATE TABLE语句都可以用来删除数据,但是这两种语句还是有着其区别的,下文就为您介绍这二者的差别所在. AD:干货来了,不要等!WOT2015 北京站演讲PPT开放下载! MySQL DELETE语句和TRUNCATE TABLE语句功能相似,但是二者究竟有何区别呢?下文就将为您分析MySQL DELETE语

RHEL6删除文件后未释放空间

早上一个网站页面打开空白,后来查看是磁盘空间满了,查看是nginx的access.log占用了170多个G,于是通过rm将其删除,后重启nginx问题依然,此时再查看磁盘发现空间并未释放 [[email protected] logs]# du -h * 176G access.log 0 error.log 4.0K nginx.pid [[email protected] logs]# du -sh  176G . [[email protected] logs]# rm access.lo

mysql delete from table 失败

SET @[email protected]@SQL_MODE, SQL_MODE='NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'; TRUNCATE TABLE nametruncate语句,是清空表中的内容,包括自增主键的信息.truncate表后,表的主键就会重新从1开始. check the manual that corresponds to your Mysql server version for the right syntax to y

Mysql 数据库优化(三)——分区和分表【个人经验】

引:MyISAM存储引擎的表在数据库中,每一个表都被存放为三个以表名命名的物理文件. 1.首先肯定会有任何存储引擎都不可缺少的存放表结构定义信息的.frm文件, 2.另外还有.MYD和.MYI文件,分别存放了表的数据(.MYD)和索引数据(.MYI). 每个表都有且仅有这样三个文件做为MyISAM存储类型的表的存储,也就是说不管这个表有多少个索引,都是存放在同一个.MYI文件中. MyISAM支持以下三种类型的索引: 1.B-Tree索引 B-Tree索引,顾名思义,就是所有的索引节点都按照ba

Win10正式版哪些预装的应用可以卸载?Win10释放空间的详细教程

Win10正式版哪些预装的应用可以卸载?win10正式版有很多预装软件使用不到的,太占用空间,我们可以删除,但是一般的删除根本删不掉,该怎么办呢?下面分享Win10释放空间的详细教程 Win10正式版哪些预装的应用可以卸载?win10正式版有很多预装软件使用不到的,太占用空间,我们可以删除,但是一般的删除根本删不掉,该怎么办呢?下面分享Win10释放空间的详细教程.如果不是win10子弟啊的程序,可以参考win10正式版自己在应用商店下载的软件的两种卸载方法 1.输入"PowerShell&qu