innodb引擎mysql磁盘存储优化

占用磁盘的主要是binlog、数据占用、空洞占用、索引占用,binlog定时删除保留一定时长,我们无能为力,只能从数据下手

思路:
1) 清理不需要的数据
2) 考虑将大表迁移至tidb

1.查找大表:

SELECT 
TABLE_NAME,
data_free/1024/1024/1024,
index_length/1024/1024/1024,
data_length/1024/1024/1024 ,
sum((data_length+index_length+data_free)/1024/1024/1024)as dl
FROM `TABLES` 
GROUP BY TABLE_NAME
ORDER BY dl DESC

《阿里巴巴Java开发手册》提出单表行数超过500万行或者单表容量超过2GB,推荐分库分表操作 ,那么这里就把大于2G的表作为大容量表处理。

2.删除binlog
在查找大表的时候发现表占用存储并不是很大
转而看日志情况,binlog占用磁盘空间最大
binlog其主要是用来记录对mysql数据更新或潜在发生更新的SQL语句,并以"事务"的形式保存在磁盘中;

3.清理表空洞

删除过期数据之后,发现磁盘空间占用并没有减少,原来是innodb引擎的mysql库,用delete table where语句删除数据后 并不会回收碎片空间,而是有新数据之后,如果能存入该空间就会存进该空间,否则磁盘空间永远不会减少。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值