mysql old表_MYSQL百G大表正确清空方式

当我们遇到大表清空时,会有几种相应的操作方法(表player):

1. truncate table player;

2. 创建新表、rename表、然后直接drop老表

3. 创建新表、rename表、创建老表硬链接、slowrm进行大文件删除。

注:创建新表时,需要提前和开发沟通用来确认新表自增ID起始位置

下面将是几种方案的操作步骤以及优劣势

1.操作步骤:

* truncate table player;

优势:操作简单

劣势:表产生元数据锁,机器资源占用过高。

结论:强烈不推荐使用

2.操作步骤:

* create table player_new like player;

* rename table player to player_old_del, player_new to player;

* drop table player_old_del;

优势:减少锁时间,表切换业务基本无感

劣势:drop 表依然会产生大量机器IO占用,导致MYSQL性能急剧下降

结论:此方案可以在业务低峰期执行。

3.操作步骤:

* create table player_new like player;

* rename table player to player_old_del, player_new to player;

* 在OS层为player_old_del.ibd文件创建硬链:ln player_old_del.ibd player_old_del.ibd.ln

* drop table player_old_del;

* 通过slowrm限制删除硬链文件:slowrm -f -s 1 -b 1073741824 player_old_del.ibd.ln(注:SSD类磁盘基本IO使用率控制在20%左右)

优势:减少锁时间,表切换业务基本无感,drop 表以及删除大文件不会对业务产生影响。

劣势:操作繁琐,需要去每个slave节点创建硬链接并且进行删除。

结论:推荐此方法,建议把操作封闭成脚本化。

在对数据库进行任何DDL操作时,不仅要关注数据库层面影响,而且还要对于当前系统层影响做出相应判断。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值