mysql碎片整理innodb_Innodb表碎片整理

最近的数据库集群剩余容量不足,又开始了数据结转之路,主要干两件事情

1.结转数据,根据业务设定数据保留的时长,在时长之外的结转

2.对结转外的数据表进行碎片整理

因为数据结转,会造成大量的碎片,不进行碎片整理表的存储空间容量也是不会降下来的,因为delete的数据,这些数据占用的磁盘空间可能并不会立刻被回收

使用alter table table_name engine = innodb命令进行整理

主要是重新组织表数据和关联索引数据的物理存储,,相当于重建引擎,以减小存储空间并提高访问表时的I/O效率

整理之前,如果想查看碎片的大小,可以通过下面方法:

可以通过show table [from|in db_name] status like '%table_name%'命令查看表的容量的信息

通过 Data_length 、Rows、Avg_row_length 计算碎片的大小:

碎片大小 = 数据总大小 - 实际表空间文件大小

数据总大小 = Data_length

实际表空间文件大小 = rows * Avg_row_length

碎片大小(M) = (Data_length - (rows * Avg_row_length)) / 1024 /1024

通过information_schema.tables的DATA_FREE列查看表有没有碎片:

SELECT t.TABLE_SCHEMA,

t.TABLE_NAME,

t.TABLE_ROWS,

t.DATA_LENGTH,

t.INDEX_LENGTH,

concat(round(t.DATA_FREE / 1024 / 1024, 2), 'M') AS DATA_FREE

FROM information_schema.tables t

WHERE t.TABLE_SCHEMA = 'XX_db_name'

DATA_FREE列展示的就是碎片的大小,单位是M

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值